Problema de modelos de vidro e Sitecore ItemCache
-
21-12-2019 - |
Pergunta
Estamos usando modelos Glass Mapper com Sitecore 7.1 (MVC Renderings), recentemente implantamos este projeto em ambiente live, mas nosso cliente percebeu que o desempenho está degradando com o tempo, por exemplo, após 8 ~ 12 horas, algumas páginas começam a demorar 20 segundos para carregar.Depois de entrar em contato com o suporte do sitecore e enviar despejos de CPU/memória, a equipe de suporte respondeu:
"Devido ao Glass Mapper frequentemente resolver caminhos de itens, o Sitecore precisa atualizar os registros no cache ItemPaths (onde cada atualização "bloqueia" o cache).Como isso parece acontecer com frequência, o aplicativo encontraria a situação em que alguns threads estariam aguardando que um único thread concluísse a atualização do cache do ItemPaths."
Então, você já encontrou esse problema antes?há algo que preciso fazer com nossos modelos Glass para evitar isso?
Versão "Glass.Mapper" = "3.0.11.23"
Versão "Glass.Mapper.Sc" = "3.1.10.31"
Obrigado
Solução
O problema estava em nossa classe base que contém a propriedade "Full Path":
public virtual string FullPath { get; set; }
Isso significa que cada vez que o item for carregado pelo glass ele atingirá o cache do caminho, o que estava causando a lentidão.
Atualizei a propriedade para ficar mais parecida com a propriedade 'Lazy Loaded':
[Glass.Mapper.Sc.Configuration.Attributes.SitecoreIgnore()]
public string FullPath {
get
{
return FullPath();\\This method retrieve FullPath from item.Paths.FullPath
}
}
Isso resolveu o problema.