2013-04-01 59 views
0

我正在使用Knockoutjs在我的客戶端的純HTML CSS網站上使用與JSON數據集的數據綁定。對於我使用Datatables庫的表。帶Knockoutjs綁定的HTML網站有性能問題

我在Windows Azure網站上託管了該網站。

這裏是網站的鏈接:http://bit.ly/(REMOVED因爲它CONFEDENTIAL)

它需要大約4秒鐘的加載,即使我已經使用CDN常見的JS庫的網站。

它不應該有那麼多的加載時間。我無法在這裏找到罪魁禍首。我從4個不同的數據集中提取數據。它對性能有影響嗎?或者Windows Azure數據中心存在問題,需要從Azure服務器獲取響應。是Azure的罪魁禍首?

您可以檢查上面給出的網站鏈接上的頁面加載時間。

任何幫助,將不勝感激。

解決方案:

而不是使用同步調用,使用

$.getJSON(url, function(data){ 
//whole knockoutjs logic and bindings 
} 
+0

根據Chrome的說法,我需要大約800ms-900ms來加載整個頁面。有一個404. – smarx

回答

1

所有模型.js文件(與patientMedicationChart-Index.js開始)同步加載(async:false被設置在該文件)。這意味着瀏覽器必須等待每個腳本文件的加載才能繼續加載下一個腳本文件。

我計算了大約10個文件加載,就像你的演示文件一樣,對於我來說每個文件需要大約200ms的時間才能加載(大約95%的200ms等待響應,這似乎相當緩慢; Azure的服務器問題)。因此,加載這些文件所花費的時間已經是2秒,並且只有在加載完所有文件後纔會觸發頁面的ready事件。

可能有一個想要同步加載這些文件的原因,但實際上,它導致整個頁面加載時間的很大一部分。

+0

你好,謝謝你的回覆。因此,Azure服務器也可能存在問題。由於每個請求的等待時間大約爲100-200ms。如果我考慮10個請求,則需要大約1.5秒的額外時間。 我可以嘗試將服務器更靠近網站將要使用的位置。 那麼,有什麼辦法可以讓我異步獲取json數據集嗎? –

+1

默認情況下AJAX請求是異步的(除非關閉,就像在代碼中那樣),但是它需要重寫JS代碼,因爲處理這種請求與處理同步請求完全不同。 – robertklep

+0

非常感謝。我已經開始重寫javascript :-)欣賞你的幫助。 –