Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Много элементов = тормоза (https://javascript.ru/forum/misc/78667-mnogo-ehlementov-%3D-tormoza.html)

tk.stas 16.10.2019 22:20

Много элементов = тормоза
 
Всем привет. Подкиньте пожалуйста идею, как можно решить следующую проблему.

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

ksa 17.10.2019 07:31

Цитата:

Сообщение от tk.stas
Как можно сделать чтоб предыдущие элементы скрывались, но при возврате возвращались обратно.

Скрытие не освободит память на компе. :no:
При огромном количестве ДОМ элементов страница просто "зависнет". Желательно делать подгрузки не только "вниз", но и "вверх".

Если про нижние элементы знает только сервер... То прочитанные можно хранить на клиенте в куках, локалстордже или локальных БД. Потом вычитывать их от туда и отрисовывать... ;)
Правда и тут есть ограничения по объему данных. :(

Malleys 17.10.2019 10:01

tk.stas, ru.wikipedia.org/wiki/Объектный_пул

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

Цитата:

Сообщение от tk.stas
бесконечной прокрутки.

Там нет на самом деле такой прокрутки, у вас данные всё равно однажды закончатся. Это очень длинная страница.

Если вам нужно выводить... множество натуральных чисел, или данные, основанные на таких числах, то вам скорей нужно отслеживать прокрутку в какой-то ограниченной области, и в зависимости от неё менять те немногие элементы, которые влезли на экран, что создаст эффект такой прокрутки!

UPD Статья на эту тему: https://medium.com/walkme-engineerin...d-a4f58f4b86d5


Часовой пояс GMT +3, время: 13:11.