[英]MVC 4 website very slow on iPad
我已經開發了一個使用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>
談到網站性能,它可能是數以百萬計的事情。 導致問題的JavaScript文件不是必需的。 以下幾點可能對您有所幫助:
對於iPad(以及任何其他設備/平台,其瀏覽器不是IE 8或更低)jQuery 2執行方式更好..它實際上是jQuery的重量很多,在舊版本中它進行了大量不相關的驗證和落后兼容性東西
所以,你可以嘗試:
總之(基於這篇帖子檢測Internet Explorer瀏覽器版本問題 )
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"
));
嘗試將wireshark下載到服務器,啟動它,並在捕獲數據包流時重新創建錯誤。 然后右鍵單擊該應用程序的數據包並選擇“Follow TCP Stream”。 您將能夠看到並過濾掉這些數據包。
您希望查找有關服務器響應時間的入站請求和出站響應。 如果時間快<100ms,那么接下來你必須看看來自IPAD的每個后續請求需要多長時間。 通過查看跟蹤中的相對時間列,您應該能夠輕松找到dealays的位置。
從那里,如果這是一個純客戶端問題,你需要專注於設備方面。 如果它是網絡的東西,那么你至少可以排除應用程序。 如果這是一個應用程序問題,那么您將能夠看到需要糾正的內容。
請記住,在所有網絡都准備就緒之前,任何應用程序都無法從客戶端運行,例如,在任何數據包可以飛行之前必須有DNS解析。 您可能還注意到正在發送一個或多個重復的數據包。這通常是不正確的橋接和/或路由器問題的指示。 還可能存在所謂的跳數問題,其中延遲是由設備必須達到的路由器的數量引起的。 還可能存在路由器“呼吸”問題,其中路由器的流量是壓倒性的(架構稱“只是丟棄數據包”)。 當發生這種情況時,TCP會嘗試重試,這實際上會使事情變得更糟。
使用Wireshark https://www.wireshark.org檢查您的服務器網絡活動
我遇到了服務器嘗試使用netbios和ICMP連接到客戶端以解決客戶端詳細信息並且超時的問題。
在服務器上禁用TCP上的Netbios,然后檢查它是否是網絡問題,而不是實際的編程問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.