-2

Оптимизация подгружающихся списков

Анонимный 7 лет назад обновлен 7 лет назад 1

Когда скроллишь нулевую или /b/, то долгая подгрузка новых тредов реально выбешивает, особенно если ищешь конкретный тред, который уже видел когда-то. И ждешь, ждешь, ждешь...


Решение: при открытии списка, отдавать с сервера ВСЕ треды, ну или по крайней мере с каким-то большим лимитом, порядка 500 тредов. Понятно, что это будет весить много, потому можно отдавать в компактном виде, без текста и ссылок, давая только базовую информацию:


Доска|номер_треда|его_таймштамп|постов|картинок|флаги_треда|последний_пост_-3|его_таймштамп|последний_пост_-2|его_таймштамп|последний_пост_-1|его_таймштамп


В таком виде, если его отсылать в виде JSON, каждый тред будет весить до 50 байт, что составляет 25кб на 500 тредов. Если охота большей оптимизации, то этот формат легко можно сделать бинарным, а на сервере его дополнительно сжимать gzip-ом. Если боишься нагрузки, то можно отдавать статикой.


Это позволит вместо сообщения "подгружаем" сразу рендерить все треды, а точнее, уже имеющиеся данные тредов: от пустых подложек с таймштампами, чего достаточно для принятия решения, скроллить ли дальше, до прогрессивной загрузки списка, если тексты постов кешировать на клиенте (к примеру, заголовки или несколько байт постов). Если переделать формат ссылок картинок на более человеческий, то картинки можно будет загружать сразу, зная лишь количество картинок в посте (хеш все равно пользователю дается).

Сервис поддержки клиентов работает на платформе UserEcho