Этот проект пока приостановлен. Возможно, мы вернёмся к нему в будущем и опубликуем обновление здесь, если это произойдёт.
Мы представляем экспериментальную функцию, которая поможет сообществам с большим количеством категорий. ![]()
В течение последних нескольких месяцев мы усердно работали над тем, чтобы сайты на базе Discourse лучше справлялись с сообществами, имеющими множество категорий (и не только!). Это позволит администраторам создавать тысячи категорий, сохраняя при этом привычный и удобный пользовательский интерфейс.
Это всё ещё экспериментальная функция, которую можно включить, изменив параметр сайта lazy_loaded_categories_groups. По умолчанию она отключена.
Как это работает?
В настоящее время все данные о категориях загружаются при переходе на сообщество Discourse. Это называется «предзагрузкой» (eager loading) и не является оптимальным решением для сайтов с большим количеством категорий, так как означает передачу большого объёма информации до первого отображения, что увеличивает общее время загрузки.
Новый метод называется «ленивой загрузкой» (lazy loading) и откладывает загрузку информации о категории до тех пор, пока она действительно не понадобится (например, при поиске категории, навигации по ней или создании ссылки на неё, чтении темы или сообщения, в которой она упоминается, и т. д.). Меньший объём передаваемых данных означает более быструю загрузку и довольных пользователей! ![]()
Что это значит для вас как участника Meta?
Мы активно тестировали эту функцию внутренне, но, учитывая масштаб проделанной работы, существует небольшая вероятность появления ошибок. Если вы заметите какие-либо сбои, связанные с категориями, сообщите нам об этом в ответе на эту тему или создайте тему с тегом bug.
Что это значит для вас или вашего сообщества?
Независимо от того, размещаете ли вы свой сайт на нашей платформе или используете собственную хостинг-инфраструктуру, эта функция по умолчанию отключена, и видимых изменений быть не должно.
Однако, если вы планируете расширить своё сообщество до большого количества категорий, мы настоятельно рекомендуем включить эту функцию.
В будущем мы включим её по умолчанию и в конечном итоге устареваем и удалим код, отвечающий за «предзагрузку» категорий.
Что это значит для разработчиков плагинов и тем?
В целом, для большинства плагинов потребуется минимальное изменение или вообще никаких изменений, если они используют компоненты категорий из ядра или предзагруженные данные (например, выполняют запрос только для категорий, которые уже видны при загрузке страницы, поскольку это означает, что они уже предзагружены).
Некоторые проблемы могут возникнуть при попытке использовать информацию о категориях, которые ещё не загружены. Метод Category.findByIds по-прежнему будет возвращать только уже загруженные категории, тогда как Category.asyncFindByIds может выполнить запрос к серверу, если информация ещё не загружена.

















