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

















