2016-04-21 52 views
2

好的,所以我刚刚花了6-8周的时间在Umbraco的杂草上,并对我们的网站和环境做了一些修复/改进。我花了很多时间试图纠正较低级别的Umbraco缓存相关问题。现在反映我的经验,我仍然没有线索的概念区别如下之间是什么:Umbraco缓存结构的差异?

  • 检查指标
  • umbraco.config内存
  • 缓存的xml文件(据说类似于一把umbraco的.config)
  • CMSContentXML表

再次感谢,

德文

回答

5

检查指标是一把umbraco内容索引

所以,当你永远创建/更新/删除的内容,当前内容信息将被收录

该指数是用于搜索 - 引擎盖下,这是,如果你想

更多信息Lucene索引 一把umbraco后端使用这些索引搜索

您可以创建自己的索引结帐,Overview & Explanation - "Examining Examine by Peter Gregory"

umbraco.config和内存中的缓存xml是真的一样的东西。

前端UmbracoHelper API从缓存中获取内容不是数据库 - 缓存从

CMSContentXML包含每个内容的信息作为XML

所以基本上这个XML代表所有的umbraco.config节点内容

那么概括的信息,他们代表真正的三件事:

  1. 检查用于搜索
  2. umbraco.config缓存数据 - 节省往返到DB
  3. CMSContentXML存储内容

编辑的全部信息,包括罗伯特·福斯特评论更好地澄清和UmbracoHelper vs ExamineManager

对于umbraco.config和CMSContentXML表,@ robert-foster评论了

umbraco。config仅存储所有已发布内容的最新版本;内存中缓存是该文件的缓存版本; cmscontentxml表存储所有内容的表示,主要用于预览模式 - 每次保存内容时都会更新。 IIRC它还存储其他内容类型的表示

问候UmbracoHelper VS ExamineManager

UmbracoHelper API主要是得到它的从内存缓存内容 - IMO它定位直接的内容时,例如当效果最好你知道你想要的内容的id,你只需拨打Umbraco.TypedContent(id)

但是你在哪里得到你想要的id呢?或者换句话说,如果你想找到包含单词“Test”的所有内容的属性Title,那么你将使用Examine来搜索它。因为Examine实际上是lucene包装,所以它会变得快速和高效

虽然你可以通过诸如Umbraco.TypedContent(id).Children之类的方法遍历树,然后使用linq来过滤结果,但是我认为这是在内存中使用linq-to -object,所以它是效率不高和升迁为Lucene的

所以,我个人认为:当你正在寻找(定位)内容

  1. 使用检查 - 因为你可以用一个适当的搜索能力引擎lucene
  2. 一旦你从第e搜索结果,使用UmbracoHelper将内容标识的完整发布内容表示转换为强类型模型并处理数据。

一件事@罗伯特·福斯特提到其中,我不知道该评论是UmbracoHelper提供的搜索方法是绕检查的包装,所以使用,如果有更多熟悉的API。

最后,如果以上任何一条语句错误或不正确,请帮我澄清一下,以便以后任何人看到它都不会错,谢谢大家。

+1

我可以推动和编辑/“更多信息”以获得更好的答案。 为UmbracoDB中的表格如何构建到存储在CMSContentXML中的XML中添加第4个项目符号。 UmbracoHelper与ExamineManager的更详细的解释,因为他们都'搜索'数据。 –

+0

@Alan你几乎没有错 - umbraco.config只存储所有已发布内容的最新版本;内存中缓存是该文件的缓存版本; cmscontentxml表存储所有内容的表示,主要用于预览模式 - 每次保存内容时都会更新。 IIRC还存储其他内容类型的表示。 –

+0

@Devin认为UmbracoHelper是查询已发布缓存的存储库接口 - 它能够通过id或位置检索节点并遍历树;它的搜索方法实际上是一个方便的方法,包裹在检查。如果你想做更复杂的搜索,你可能会想直接使用检查;特别是如果您使用自定义索引。 –