de Sitecore “Latest” Item
Pergunta
A questão geral arquitetura na Sitecore 6 ...
Vamos dizer que temos uma situação onde temos 10.000 itens de aplicação de um “Press Release” template. Esses itens são armazenados em Sitecore em /sitecore/content/home/press/*
. Na nossa homepage, gostaríamos de apresentar algumas informações sobre os 3 mais recentes comunicados de imprensa.
Nós estamos olhando para construir algo equivalente a SQL de:
SELECT TOP 3 * FROM PressReleases ORDER BY ReleaseDate
A leitura através da documentação de consulta Sitecore, parece que a maioria desta consulta deve ser tratado em nossa aplicação C #. Algo como:
public Item[] GetRecentPressReleases()
{
string query = "/sitecore/content/home/press/*";
Item[] items = Sitecore.Context.Database.SelectItems(query);
Array.Sort(items, new PressReleaseDateComparer());
return items.Take(3).ToArray();
}
Parece que os itens de carga 10.000 Sitecore do banco de dados na memória e, em seguida, classificá-los cada vez que nossa homepage é hit seria inaceitável do ponto de vista do desempenho.
Existe uma maneira mais eficiente para expressar essa consulta? Ou deveria ser focado em cache de saída e / ou pré-cálculo?
Solução
Sitecore Consulta (ou uma consulta rápida) não suporta ordenação ou TOP construções, assim que estas coisas têm de ser expressos em código.
Com foco em cache é uma coisa boa. Usando padrão caching prestação Sitecore é uma abordagem mais simples, eu acho que você não precisa de nada mais complexo do que isso neste caso.
Ela ajuda a entender que Sitecore consulta pode ser resolvida quer nos níveis SQL ou API , o que afeta o desempenho e às vezes pode ser usado para a sua vantagem.
rápido consulta é construído em Sitecore 6 e faz com que todas as consultas executar a nível SQL, aumentando drasticamente o desempenho. Ele também não suporta triagem e TOP no momento, mas estamos considerando como isso pode ser adicionado.
Outras dicas
Uma solução para o problema "10 últimas notícias" é usar Lucene.
Esta é uma maneira de fazer isso .