好的,所以我刚刚在 Umbraco 的杂草中度过了过去 6-8 周,并对我们的网站和环境进行了一些修复/改进。我花了很多时间试图纠正较低级别的 Umbraco 缓存相关问题。现在反思我的经验,我仍然不知道以下概念之间的差异是什么:
- 检查索引
- umbraco.config
- 缓存在内存中的 xml 文件(据说类似于 umbraco.config)
- CMSContentXML 表
再次感谢,
德文
好的,所以我刚刚在 Umbraco 的杂草中度过了过去 6-8 周,并对我们的网站和环境进行了一些修复/改进。我花了很多时间试图纠正较低级别的 Umbraco 缓存相关问题。现在反思我的经验,我仍然不知道以下概念之间的差异是什么:
再次感谢,
德文
检查索引是 umbraco 含量的索引
因此,当您创建/更新/删除内容时,当前的内容信息将被编入索引
该索引用于搜索 - 在引擎盖下,它是 lucene 索引 umbraco 后端使用这些索引进行搜索
如果需要,您可以创建自己的索引
更多信息结帐,概述和解释-“检查彼得格雷戈里的检查”
umbraco.config 和内存中缓存的 xml确实是一回事。
前端 UmbracoHelper api 从缓存而不是数据库获取内容 - 缓存来自 umbraco.config
CMSContentXML包含每个内容的信息作为 xml
所以本质上这个xml代表了一个节点内容的所有信息
所以简而言之,它们代表了三件事:
编辑以包括 Robert Foster 评论和 UmbracoHelper vs ExamineManager 的更好澄清
对于 umbraco.config 和 CMSContentXML 表,@robert-foster 评论道
umbraco.config 仅存储所有已发布内容的最新版本;内存缓存是该文件的缓存版本;cmscontentxml 表存储所有内容的表示形式,主要用于预览模式 - 每次保存内容项时都会更新。IIRC 它还存储其他内容类型的表示
问候UmbracoHelper 与 ExamineManager
UmbracoHelper api 主要从内存缓存中获取它的内容 - IMO 它在定位直接内容时效果最好,例如当你知道你想要的内容的 id 时,你只需调用Umbraco.TypedContent(id)
但是你首先从哪里得到你想要的 id 呢?或者换一种说法,如果你想找到所有包含“Test”这个词的内容的属性标题,那么你会使用检查来搜索它。因为 Examine 是真正的 lucene 包装器,所以它会快速高效
虽然您可以通过诸如Umbraco.TypedContent(id).Children
然后使用linq过滤结果的方法来遍历树,但我认为这是使用linq-to-object在内存中完成的,因此它不如lucene高效和优先
所以我个人认为:
@robert-foster 在评论中提到的一件事,我不知道 UmbracoHelper 提供了 Search 方法,它是检查的包装器,所以如果更熟悉该 api,请使用它。
最后,如果上面的任何陈述是错误的或不太正确的,请帮助我澄清,以便以后任何人看它都不会出错,谢谢大家。