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?

Foi útil?

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 .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top