【问题标题】:Glass Models and Sitecore ItemCache issueGlass 模型和 Sitecore ItemCache 问题
【发布时间】:2014-07-29 19:03:25
【问题描述】:

我们正在使用带有 Sitecore 7.1(MVC 渲染)的 Glass Mapper 模型,我们最近将该项目部署到实时环境中,但我们的客户注意到性能随着时间的推移而下降,例如,在 8~12 小时后,一些页面开始加载需要 20 秒。 在联系 sitecore 支持并发送 CPU/内存转储后,支持团队回复:

"由于 Glass Mapper 经常解析项目路径,Sitecore 需要更新 ItemPaths 缓存中的记录(每次更新都会“锁定”缓存)。由于这种情况似乎经常发生,因此应用程序会在几个线程时遇到这种情况将等待单个线程完成更新 ItemPaths 缓存。”

那么,你以前遇到过这样的问题吗?我需要对我们的 Glass 模型做些什么来防止这种情况发生吗?

"Glass.Mapper" 版本="3.0.11.23"

"Glass.Mapper.Sc" 版本="3.1.10.31"

谢谢

【问题讨论】:

  • 嗨,艾哈迈德,这是我第一次听说这个。他们是否提供了任何进一步的信息。如果这是一个真正的问题,我会有兴趣解决这个问题。
  • 如果您无法在此处发布更多信息,您可以通过 glass.lu 的 mike 与我联系
  • 我见过这样一种情况,即在 Url 属性上具有 SitecoreInfoType.Url 的基类,这导致了很多 ItemPaths 的使用。这可能就是 Sitecore 看到这种行为的原因。我们停止使用 Url 信息类型。
  • @RvanDalen 你用什么代替了?
  • 我们对此有什么答案吗?

标签: sitecore sitecore7 glass-mapper sitecore-mvc sitecore7.1


【解决方案1】:

问题出在我们的包含“完整路径”属性的基类中:

public virtual string FullPath { get; set; }

这意味着每次通过玻璃加载项目时,它都会命中路径缓存,从而导致速度变慢。

我已将该属性更新为更像“延迟加载”属性:

[Glass.Mapper.Sc.Configuration.Attributes.SitecoreIgnore()]
public string FullPath {
   get
   {
      return FullPath();\\This method retrieve FullPath from item.Paths.FullPath
   }
}

这解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多