Как я могу загрузить данные AJAX в фоновом режиме, без ущерба для производительности? - PullRequest
4 голосов
/ 10 декабря 2010

У меня очень большой каталог товаров, который я пытаюсь загрузить в «Страницы», скажем, по 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)
            });
}

К сожалению, это вызывает проблемы с производительностью - браузер реагирует наввод пользователя очень вяло, пока весь каталог не будет загружен.(В этот момент я могу либо загрузить весь каталог, либо не выполнять фоновую загрузку).

Что я могу сделать, чтобы осуществить низко приоритетную фоновую загрузку данных?Это вообще возможно?Должен ли я сдаться и просто сделать ленивую загрузку?

1 Ответ

6 голосов
/ 10 декабря 2010

Проблема не в вызове Ajax, который вообще не должен зависать. Проблема возникает, когда вы обрабатываете эти данные. Большие циклы и множество записей в DOM замедляют работу браузера. Меньшие циклы, использование setTimeout для циклов и однократная запись в DOM сделают его более отзывчивым.

Не видя код обработки, это столько помощи, сколько я могу дать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...