我开发了一个使用MVC 4的销售点系统。在Windows和Mac上的响应速度和加载时间是即时的,但在iPad上加载页面或执行诸如向篮子添加项目等操作需要8-13秒。为了提高Web应用程序的速度,我在IIS中启用了压缩并缩小了我的所有java脚本文件,我还使用捆绑将以下.js文件捆绑在一起,这可能会改善页面的加载:
我在页面上使用的其他javascript文件介于5KB和15KB之间。完成所有这些操作后,应用程序似乎快了几秒钟,但仍然花费了不可接受的时间(8-10秒)。
有没有人在iPad上遇到类似的性能问题,你是如何解决它的?我还能做些什么来提高性能吗?
我正在使用Windows Server 2003和IIS 6.0
这是我的捆绑注册码:
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-1.8.2.min.js",
"~/Scripts/jquery.easing.1.3.js",
"~/Scripts/knockout-2.2.0.js",
"~/Scripts/common/common.min.js",
"~/Scripts/popup.min.js"
));
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
BundleTable.EnableOptimizations = true;
}
这就是我在母版页上调用它的地方:
@using System.Configuration
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<meta name="apple-mobile-web-app-capable" content="yes">
<title>Prestige SSC</title>
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
@Styles.Render("~/Content/css")
<script type="text/javascript">
var screenRefreshTime = '@ConfigurationManager.AppSettings["ScreenRefreshTime"].ToString()';
screenRefreshTime = parseInt(screenRefreshTime);
</script>
</head>
<body>
@RenderBody()
</body>
</html>
答案 0 :(得分:2)
谈到网站性能,它可能是数以百万计的事情。导致问题的JavaScript文件不是必需的。以下几点可能对您有所帮助:
答案 1 :(得分:2)
对于iPad(以及任何其他设备/平台,其浏览器不是IE 8或更低)jQuery 2表现得更好..它实际上是jQuery的重量很多而在旧版本中它带有很多不相关的验证和向后兼容性的东西
所以,您可以尝试:
简而言之(基于这篇文章Detect Internet explorer browser version problems)
var jQuery = "~/Scripts/jquery-2.1.1.min.js";
if ((Request.Browser.Browser == "IE") && ((Request.Browser.MajorVersion < 9)))
{
jQuery = "~/Scripts/jquery-1.8.2.min.js";
}
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
jQuery,
"~/Scripts/jquery.easing.1.3.js",
"~/Scripts/knockout-2.2.0.js",
"~/Scripts/common/common.min.js",
"~/Scripts/popup.min.js"
));
答案 2 :(得分:1)
尝试将wireshark下载到服务器,启动它,并在捕获数据包流时重新创建错误。然后右键单击该应用程序的数据包并选择&#34; Follow TCP Stream&#34;。您将能够查看并过滤掉这些数据包。
您希望查找有关服务器响应时间的入站请求和出站响应。如果时间很快&<100ms,那么接下来你必须看看来自IPAD的每个后续请求需要多长时间。通过查看跟踪中的相对时间列,您应该能够轻松找到dealays的位置。
如果这是纯客户端问题,那么您需要关注设备端。如果它是网络事物,那么您至少可以排除该应用程序。如果它是一个应用程序问题,那么您将能够看到需要纠正的内容。
请记住,在所有网络都准备就绪之前,没有应用程序可以从客户端运行,例如,在任何数据包可以飞行之前必须有DNS解析。您可能还注意到正在发送一个或多个重复的数据包。这通常是不正确的桥接和/或路由器问题的指示。还可能存在所谓的跳数问题,其中延迟是由设备必须达到的路由器的数量引起的。也可能有路由器&#34;呼吸&#34;路由器的流量压倒了它的问题(架构所说的#34;只是扔掉数据包&#34;)。当发生这种情况时,TCP会尝试重试,这实际上会使事情变得更糟。
答案 3 :(得分:1)
使用Wireshark https://www.wireshark.org
检查您的服务器网络活动我遇到了服务器尝试使用netbios和ICMP连接到客户端以解决客户端详细信息并且超时的问题。
在服务器上禁用TCP上的Netbios,然后检查它是否是网络问题,而不是实际的编程问题。