gpt4 book ai didi

umbraco - Umbraco 缓存结构有何差异?

转载 作者:行者123 更新时间:2023-12-02 10:50:00 25 4
gpt4 key购买 nike

好吧,我刚刚在 Umbraco 的杂草中度过了过去 6-8 周的时间,并对我们的网站和环境进行了一些修复/改进。我花了很多时间尝试纠正较低级别的 Umbraco 缓存相关问题。现在反射(reflection)我的经验,我仍然不知道以下之间的概念差异是什么:

  • 检查索引
  • umbraco.config
  • 内存中缓存的 xml 文件(据说与 umbraco.config 类似)
  • CMSContentXML 表

再次感谢

德文

最佳答案

检查索引是umbraco内容的索引

因此,当您创建/更新/删除内容时,当前内容信息将被索引

该索引用于搜索 - 在幕后,它是 lucene 索引umbraco 后端使用这些索引进行搜索

如果需要,您可以创建自己的索引

更多信息结账,Overview & Explanation - "Examining Examine by Peter Gregory"

umbraco.config 和内存中缓存的 xml 实际上是同一件事。

前端 UmbracoHelper api 从缓存而不是数据库获取内容 - 缓存来自 umbraco.config

CMSContentXML 以 xml 形式包含每个内容的信息

所以本质上这个xml代表了一个节点内容的所有信息

简而言之,它们实际上代表了三件事:

  1. examine 用于搜索
  2. umbraco.config 缓存数据 - 保存往返数据库
  3. CMSContentXML 存储内容的完整信息
<小时/>

编辑以包含 Robert Foster 评论以及 UmbracoHelper 与 ExamineManager 的更好说明

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

umbraco.config stores the most recent version of all published content only; the in-memory cache is a cached version of this file; and the cmscontentxml table stores a representation of all content and is used primarily for preview mode - it is updated every time a content item is saved. IIRC it also stores a representation of other content types

致敬 UmbracoHelper 与 ExamineManager

UmbracoHelper api 主要从内存缓存中获取内容 - IMO 在定位直接内容时效果最佳,例如当您知道所需内容的 id 时,只需调用 Umbraco.TypedContent(id)

但是你首先从哪里获得你想要的 id 呢?或者换句话说,如果你想查找所有内容的属性Title中包含“Test”一词的内容,那么你可以使用Examine来搜索它。因为Examine实际上是lucene包装器,所以它将快速高效

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

所以我个人认为:

  1. 在搜索(定位)内容时使用“检查” - 因为您可以使用适当的搜索引擎 lucene 的功能
  2. 从搜索结果中获取 ID 后,使用 UmbracoHelper 将内容 ID 的完整发布内容表示形式获取到强类型模型中并使用数据。

@robert-foster 在评论中提到的一件事是,我不知道 UmbracoHelper 提供了 Search 方法,它是检查的包装器,因此如果更熟悉该 api,请使用它。

最后,如果以上说法有错误或不太正确的地方,请帮我澄清一下,以免以后看的人看错,谢谢大家。

关于umbraco - Umbraco 缓存结构有何差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36779183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com