As exibições são armazenadas em cache por meio dos principais mecanismos de armazenamento em cache ou devo definir o armazenamento em cache diretamente em cada exibição?

23

Vejo que há configurações de cache em cada uma das minhas visualizações. Preciso defini-los ou os mecanismos de armazenamento em cache do núcleo em / admin / config / development / performance fazem automaticamente parte disso e essas "configurações extras" nas visualizações são se eu quiser substituir o comportamento de armazenamento em cache padrão do núcleo do drupal?

insira a descrição da imagem aqui

Nigel Waters
fonte
Estou curioso sobre esta pergunta exata. As configurações de cache específicas do Views substituem as configurações de cache de desempenho do Drupal Core? Logicamente, eu pensaria que seria esse o caso, mas isso não pode ser necessariamente assumido.
precisa
Comecei uma recompensa por isso, porque realmente gostaria de entender isso melhor.
precisa

Respostas:

38

O QUE: O cache de desempenho principal armazena e serve a página renderizada inteira com um ID de cache da URL. O cache de visualizações vai além disso para armazenar em cache apenas a saída da visualização.

POR QUE: É ótimo para usuários logados; outros blocos na página podem ser mais dinâmicos, mas a exibição não precisa executar uma consulta todas as vezes para cada usuário ... apenas o usuário ocasional que gera o cache da página após a vida útil do cache expirar.

CONFIGURAÇÕES: Permitir que a "saída renderizada" seja mais atualizada que a consulta é útil para itens como marcar o conteúdo como novo; caso contrário, apenas faça a correspondência.

IMAGEM GRANDE: O Drupal serve a página dinamicamente, usando um servidor para criar páginas em PHP e acessar um banco de dados (ou cache de memória). Isso permite recursos impressionantes e velocidade do editor de conteúdo ... mas o trade-off está precisando entender o cache e fazê-lo corretamente.

MÓDULOS!

Há também uma linda Cache Content Visualizações módulo que limpa cache de pontos de vista sobre editar conteúdo. Se você quiser ir além, consulte Ações de cache também, recomendo Regras para ajustar isso.

Além disso, o Blockcache Alter permite definir opções de cache "por função", página, usuário, etc. para cada bloco no seu site.

Você também pode adicionar o Gerenciador de páginas e os painéis . Isso permite que você faça coisas interessantes, como definir o cache "por usuário", "por função" ou várias outras configurações muito úteis. Embora eu pessoalmente evite painéis.

DOCUMENTAÇÃO: Para armazenamento em cache e desempenho em geral, consulte a página Drupal.org .

doublejosh
fonte
Esta resposta é realmente boa. Up-vote. Adicionei uma seção sobre o Gerenciador de páginas e painéis, e agora a resposta pode estar quase completa.
Letharion
O Core Performance "Block caching" precisa ser ativado para que o cache específico do Views funcione?
precisa
Obrigado por adicionar um pouco sobre o Gerenciador de páginas / painéis - porque, depois de adicionar a recompensa por isso, percebi que também estava curioso sobre o cache dos minipainéis. Gostaria de saber se o "Desempenho em cache de bloco" do Core Performance substitui ou foi necessário habilitar para que os Mini-painéis "Cache simples" sejam efetivos.
precisa
1
O armazenamento em cache em bloco de fato armazenaria em cache a saída do bloco, independentemente das configurações de armazenamento em cache das suas visualizações ... o mesmo que o cache da página. Se você tiver um tempo de vida útil de 12 horas no cache da página desconectada, o cache da visualização não importa, porque essas páginas não estão sendo renderizadas novamente, elas estão sendo veiculadas no cache.
doublejosh
1
Por outro lado, se eu habilitar o cache do Core Block, o Drupal imporá as mesmas condições de cache em todos os meus blocos em todo o site, certo? Como o cache do bloco Drupal principal tem alta prioridade sobre as configurações de cache do bloco de visualizações? Esse parece ser apenas um bom cenário se você não tiver conteúdo que precise ser atualizado de forma consistente.
precisa
4

O Views usa as APIs de cache do Drupal, mas cria seu próprio cache que não está relacionado ao cache normal de páginas / blocos do Drupal.

As exibições armazenam em cache a própria definição de exibição juntamente com a própria exibição renderizada. A visualização renderizada pode ser armazenada em cache de duas maneiras, o resultado da consulta ou o HTML real da visualização. Normalmente você deseja armazenar em cache o HTML gerado, pois esse é o mais eficaz em termos de desempenho. Em alguns casos em que você deseja alterar a saída com base no usuário conectado, o cache da consulta também pode ser bastante eficaz.

As tabelas que o Views usa para armazenar o cache são:

  • cache_views
  • cache_views_data
googletorp
fonte
Portanto, posso desativar a configuração de cache do Drupal Core Block em admin / config / development / performance, mas habilitar os caches de bloco de exibição específicos do Views individualmente e ainda fazer com que esses caches de bloco do Views funcionem corretamente?
precisa
1
@DavidCsonka Sim, você pode fazer isso. Armazenar em cache o bloco seria mais eficaz do que armazenar em cache a visualização, mas apenas por uma pequena margem.
googletorp
Ahh, isso é bom de saber. Mas, usar apenas as configurações de cache do Views me proporcionaria um controle mais preciso sobre como o bloco Views é armazenado em cache, certo? Se eu usar o Armazenamento em cache em bloco principal, ele basicamente impõe um conjunto de configurações de armazenamento em cache em todos os blocos do meu site? Corrigir?
precisa
1
O cache de visualizações (bloco ou página) fornece controle sobre o cache do conjunto de listas de resultados. O cache do bloco é sobre a saída completa do bloco. Sim, o cache do bloco principal é uma configuração em todo o site, mas você pode usar o Alterador do Cache do Bloco para alterar isso de forma muito granular por bloco.
precisa saber é o seguinte
3
@doublejosh No Drupal 7, você pode definir como o cache do bloco deve funcionar, em todo o site, por função, por página e por usuário da página, são as opções que eu acredito. Como o cache é feito em um nível superior, é mais eficaz em termos de desempenho.
googletorp
3

Atualmente, existe um módulo interessante chamado modos de exibição cache bully que armazena automaticamente todas as visualizações (resultados e resultados da consulta), exceto as exibições com formulários expostos. O módulo também permite excluir manualmente as visualizações do cache. Isso torna possível definir o cache para todas as visualizações (exceto as excluídas) a partir de um ponto central.

Dave Bruns
fonte
2

O Drupal 7 fornece cache de páginas, no entanto, o cache de páginas funciona apenas para usuários anônimos e não armazena em cache as visualizações.

No entanto, o cache de visualizações funciona para usuários anônimos e logados

Guy Schneerson
fonte