У меня очень большой каталог товаров, который я пытаюсь загрузить в «Страницы», скажем, по 10 товаров за раз.
Теперь, если пользователь открывает мой каталог и тратит 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)
});
}
К сожалению, это вызывает проблемы с производительностью - браузер реагирует наввод пользователя очень вяло, пока весь каталог не будет загружен.(В этот момент я могу либо загрузить весь каталог, либо не выполнять фоновую загрузку).
Что я могу сделать, чтобы осуществить низко приоритетную фоновую загрузку данных?Это вообще возможно?Должен ли я сдаться и просто сделать ленивую загрузку?