簡體   English   中英

iPad上的MVC 4網站速度很慢

[英]MVC 4 website very slow on iPad

我已經開發了一個使用MVC 4的銷售點系統。在Windows和Mac上的響應速度和加載時間是即時的,但在iPad上加載頁面或執行諸如向籃子添加項目等操作需要8-13秒。 為了提高Web應用程序的速度,我在IIS中啟用了壓縮並縮小了我的所有java腳本文件,我還使用捆綁將以下.js文件捆綁在一起,這可能會改善頁面的加載:

  1. jQuery的1.8.2.min.js
  2. 淘汰賽2.2.0.js
  3. jquery.easing.1.3.js
  4. b.popup.min.js(用於顯示模式彈出窗口僅6KB)

我在頁面上使用的其他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文件不是必需的。 以下幾點可能對您有所幫助:

  1. 將iPad連接到Mac / PC並啟用Safari Web檢查器工具。 使用Web Inspector Tools,您可以查看哪個進程花費的時間最長。 請參閱: https//developer.apple.com/library/iad/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
  2. 查看此免費電子書中可能修復的列表: http//www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/avoid-find-fix-asp-problems
  3. 嘗試從iPad中的Chrome運行。 眾所周知,Chrome擁有最快的JavaScript引擎。 另外,嘗試遠程調試iPad的Chrome。 Chrome的開發者工具具有JavaScript Profiler,可以檢查落后的具體代碼/功能。 請參閱: http//blog.prototest.com/guide-to-remote-debugging-ios-and-android-mobile-devices
  4. 您還可以遠程調試到基於Android的平板電腦。 如果在Android平板電腦上發生同樣的事情,請使用PC Chrome遠程調試移動設備。
  5. 您的網絡是否會阻止某些設備的流量?
  6. 優化您的Knockout代碼。 Knockout很棒,但你可以通過自動UI刷新和依賴性跟蹤來過度使用。
  7. 優化您的JavaScript代碼。 通過jshint.com或jslint.com運行您的代碼

對於iPad(以及任何其他設備/平台,其瀏覽器不是IE 8或更低)jQuery 2執行方式更好..它實際上是jQuery的重量很多,在舊版本中它進行了大量不相關的驗證和落后兼容性東西

所以,你可以嘗試:

  1. 替換那個版本的jQuery
  2. 從其余部分拆分jQuery include命令並使用if語句確定是否需要更新版本的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,然后檢查它是否是網絡問題,而不是實際的編程問題。

  1. 轉到控制面板,然后選擇“網絡連接”。
  2. 右鍵單擊要靜態配置的本地連接,然后單擊“屬性”。
  3. 單擊“Internet協議(TCP / IP)”,單擊“屬性”,單擊“高級”,然后單擊“WINS”選項卡。
  4. 單擊“禁用TCP / IP上的NetBIOS”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM