Доброго времени суток. На сайте есть функция, которая подгружает комментарии под постами.
При "докрутке" до последних 20-и комментариев, функция подгружает новые(150шт), и.т.д.
Т.к. этих комментариев может быть миллион и больше, то появляются огромные "фризы".
Соб-сно, вопрос: есть ли готовые механизмы, чтобы это оптимизировать? Нет разницы на каком языке программировании это реализовано, главное, чтобы была понятна логика и не представило сложностей переписать на JS.
Пытался "накалякать" что-то свое, вроде работает, но возникают баги. Мозг кипит, прошу помощи.
Не думаю, что вам тут поможет метки С и С++, если, конечно, у вас на нём backend не сделан (тут я не берусь ничего утверждать, возможно ли это и так ли это на самом у вас деле). Но метка HTML тут явно ни при чем.
А так — это целая задача, потому как надо понять, как грузит данные, какая база данных, как оттуда данные тянутся, как JS принимает и строит DOM на основе этих данных, как это можно оптимизировать и т. д. и т. п. — наверное, смело можно идти на биржу фриланса. А тем паче с таким количеством вводных данных.
Рустам Байназаров, оптимизировать нужно только отображение блока комментариев, ничего больше. Я уверен, что это организовано во многих движках. Даже, представим игровой. При жутких фризах, движок может hd-графику заменить на более "грубую", отключить сглаживание и пр. моменты. Так же и в моей задаче.
Но метка HTML тут явно не причем.
Я поставил метку html и js. Вторая куда-то пропала. Сейчас поправлю.
Ddeeeennn, ну тогда стоило бы и сразу написать тот JS-код, который это всё ваяет в DOM, не находите?
Иначе местные друзья-эксперты даже гадать не станут, каким неэффективным способом у вас происходит обновление DOM. И CSS тоже стоит выложить, потому что если сложный CSS и т. п. — он может вызвать лютые repaint'ы, что снижает производительность рендеринга и общего отклика страницы.
Если пользователи так много "крутят" колесо мыши, то может лучше сделать нормальный поиск по комментариям? Или фильтр с гибкими условиями. Тогда будут меньше крутить, и миллион сократится до 100 штук внезапно.
В общем случае надо понять, из-за чего фризы. И это место оптимизировать. Может быть, у вас просто памяти не хватает, и своп начинается. Или у вас каждую секунду происходит перебор всех комментариев (зачем-то, это пример).
То есть надо понять, в каком месте у вас сложность алгоритма O(N) или не дай бог O(N2).