1

我们正在使用带有 Sitecore 7.1 (MVC Renderings) 的 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"

谢谢

4

1 回答 1

3

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

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
   }
}

这解决了这个问题。

于 2014-11-29T15:28:03.457 回答