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

















