我有一個非常大的產品目錄,我試圖一次加載10個項目的「頁面」。如何在後臺加載AJAX數據,而不會影響性能?
現在,如果用戶打開我的目錄,並花30秒瀏覽第一個「頁面」,我想讓我的應用程序繼續從服務器加載數據 - 這樣,當用戶轉到其他頁面時,賠率它的數據已經被加載到他們的瀏覽器了。
我已經成功地通過遞歸Ajax.Request來做到這一點,即在加載頁面後加載下一頁。
Controller.prototype.loadVarieties = function(varietyNames){
//Loads varieties from the catalog, checks if more varieties need to be loaded, and keeps loaded them.
new Ajax.Request("../GetVarieties.php", {
method: 'get',
parameters: {'varietyNames': varietyNames.toJSON()},
onSuccess: function (response) {
this.model.parseCatalog(response.responseText);
var varietyNames = this.model.getVarietiesToLoad();
if(varietyNames.length != 0){
this.loadVarieties(varietyNames);
}
}.bind(this)
});
}
不幸的是,這是造成性能問題 - 瀏覽器響應用戶輸入非常slugglishly直到整個目錄加載。 (在這一點上,我可能要麼加載整個目錄,要麼不做後臺加載)。
我能做些什麼來實現數據的低優先級後臺加載?它甚至有可能嗎?我應該放棄,只是做懶加載?
我想我會延期加載。例如:當用戶點擊頁面N時,加載頁面N和頁面(N + 1 ... N + 3)。這會給人們無滯後的經驗和快速的響應時間。 – bezmax 2010-12-10 13:37:56