kole_manas Ответов: 1

Оптимизируйте производительность страницы вместо использования события прокрутки javascript


У меня есть веб-страница с длинной прокруткой и множеством div-элементов. Каждый элемент div содержит различные разделы страницы.

Для повышения производительности, то есть для сокращения времени загрузки страницы, я загружаю только первые два элемента div с данными во время загрузки страницы.

Для заполнения остальных элементов div данными я использую событие прокрутки JavaScript. Всякий раз, когда пользователь прокручивает за пределы div с данными, я динамически заполняю следующие данные div с помощью ajax.

Пожалуйста, обратитесь к образцу кода :-

Что я уже пробовал:

var div3 = 1;
var div4 = 1; 

$(window).scroll(function () {
        var scrltp = $(window).scrollTop();        
        if ((scrltp) > $("#div2").offset().top) {      
            if (div3 == 1) {
                div3 = 0;
                $("#dv3").load("PageUrl"); //Action Method url
            }
        }
        if ((scrltp) > $("#dv3").offset().top) {            
            if (div4 == 1) {
                div4 = 0;
                $("#dv4").load("PageUrl");
            }
        }
       ..........
       ..........
}


Есть ли лучший способ оптимизировать производительность страницы вместо использования события прокрутки?

MadMyche

Вот вопрос для вас: если бы существовал лучший общий метод, чем этот, разве Facebook и другие не использовали бы их?

0x01AA

Я совершенно не разбираюсь в этом, но у меня есть вопрос. Разве это плохая идея-позволить фоновому потоку читать следующие страницы и не ждать события прокрутки (и возможно ли это)?
Заранее спасибо.

MadMyche

Я не эксперт по JS, поэтому не могу сказать вам утвердительно. Я действительно знаю, что плохо написанный JS может сильно замедлить работу пользователя.
Но ваши мысли похожи на мои; сделайте начальную загрузку, а после того, как все будет загружено, загрузите данные для следующих "чиунков"

0x01AA

Большое вам спасибо за вашу оценку.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
Всякий раз, когда пользователь прокручивает за пределы div с данными, я динамически заполняю следующие данные div с помощью ajax.

Существуют методы, позволяющие большую часть времени скрывать время загрузки.

Хитрость заключается в том, чтобы загрузить все видимые дивы +1.
Затем, когда пользователь начинает прокручивать вниз, нет времени загрузки для следующего div, потому что он уже есть.
И когда последний div станет видимым, начните загружать следующий div.
Пользователь время свиток и прочитал последний див используется, чтобы загрузить в следующий див.


0x01AA

Я так не думаю, лучше пусть на это ответят веб-профи. Никакого голосования с моей стороны ;)