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

















