我们正在推出一项实验性功能,以帮助拥有大量类别的社区。![]()
在过去的几个月里,我们一直在努力使 Discourse 站点更好地服务于拥有众多类别的社区(以及其他方面!)。这将允许管理员创建数千个类别,同时保持您熟悉的友好用户体验。
这仍然是一项实验性功能,可以通过调整 lazy_loaded_categories_groups 站点设置来启用。目前默认禁用。
这是如何工作的?
目前,当您导航到 Discourse 社区时,所有类别数据都会被加载。这被称为“急切加载”,对于拥有众多类别的站点来说并不理想,因为它意味着在第一次渲染之前会传输大量信息,从而增加了整体加载时间。
新方法称为“延迟加载”,它将推迟加载类别信息,直到真正需要时(例如,在搜索类别、导航或链接类别、阅读提及类别的帖子或主题时,等等)。传输的数据越少,加载时间就越快,用户也就越满意!![]()
这对您作为 Meta 的成员意味着什么?
我们一直在内部大量测试此功能,但鉴于所做的工作量,可能会引入一些错误。如果您注意到与类别相关的任何功能失常,请在回复此主题时告知我们,或打开一个 Bug 主题。
这对您或您的社区意味着什么?
无论您是由我们托管还是自行托管,此功能默认处于禁用状态,应该不会有任何可见的变化。
但是,如果您希望扩展您的社区以拥有许多类别,我们强烈建议您启用此功能。
将来,我们将默认启用它,并最终弃用并删除“急切加载”类别的代码。
这对插件和主题开发者意味着什么?
总的来说,对于大多数插件来说,应该只需要很少或不需要更改,只要它们使用核心的类别组件或预加载的数据(例如,仅查询页面加载时已可见的类别,因为这意味着它们已经被预加载了)。
在尝试使用尚未加载的类别信息时,可能会出现一些问题。Category.findByIds 方法将继续只返回已加载的类别,而 Category.asyncFindByIds 如果信息尚未加载,则可能会在服务器上执行查找。

















