Como melhoro o desempenho do meu site Drupal7? [fechadas]

10

Para alguém que é novo no Drupal, vejo que existem muitos recursos disponíveis no Drupal Caching, mas não tenho certeza de qual deles usar.

Gokul NK
fonte
1
Podemos discutir se queremos uma pergunta canônica para isso em meta, mas ainda acho que é muito amplo. E as melhorias de desempenho podem ser muito sensíveis ao contexto e não serem feitas no vácuo.
mpdonadio

Respostas:

26

Essas são notas de minhas experiências e podem variar do que os outros experimentam. Eu uso predominantemente a pilha LAMP e considerei o mesmo em minhas sugestões.

Regras básicas para armazenamento em cache que eu geralmente sigo.

  1. Processar uma vez usar várias vezes.
  2. Viva com dados obsoletos quando possível
  3. Limpar caches com pouca frequência e mantê-lo muito específico.
  4. Quando possível, faça as alterações no nível mais baixo da pilha. LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib e módulo personalizado.

Melhorar o desempenho de um site Drupal (na ordem crescente de complexidade)

  1. Mantenha o núcleo atualizado, o módulo de contribuição e os temas atualizados. Sim, isso importa.

  2. Instale a APC no seu servidor. (Movido para o topo com base na sugestão de Letharion)

  3. Armazenamento em cache de página: admin / config / development / performance Diferença entre a vida útil mínima do cache e a expiração de páginas em cache

  4. Cache de bloco https://drupal.org/project/blockcache_alter Opções de cache de todos os blocos.
  5. Arquivos javascript e css agregados - Front End Improvements https://www.drupal.org/project/advagg
  6. Desative os módulos desnecessários. Cada módulo aumenta a quantidade de código que precisa estar disponível para o carregamento da página. E também aumenta o número de pesquisas. Sempre que possível, use um módulo genérico no lugar de vários módulos que executam funcionalidades específicas.
  7. Conteúdo das exibições de cache - Armazenamento em cache com reconhecimento de conteúdo para exibições https://www.drupal.org/project/views_content_cache
  8. Desabilitar o log do banco de dados - use https://drupal.org/project/syslog_ng
  9. Reduzir erros 404 - http://www.brokenlinkcheck.com/
  10. Respostas 404 rápidas - https://drupal.org/project/fast_404 - Tente manipular no nível do servidor.
  11. Validações do lado do cliente - https://www.drupal.org/project/clientside_validation
  12. Compactar imagem - https://www.drupal.org/project/imageapi_optimize
  13. Carregamento lento de imagens - Não carregue imagens desnecessárias - https://www.drupal.org/project/lazyloader
  14. Use folhas de Sprite - https://www.drupal.org/project/spritesheets

  15. Defina o Valor mínimo do tempo de vida útil do cache como um número mais alto e use os módulos de limpeza de cache para limpar os caches de páginas específicas - Sempre que eu edito / atualizo um nó, todos os caches de páginas de usuários anônimos são perdidos.

  16. Use o módulo Devel para assistir a consultas.
  17. Reescreva as consultas de visualizações / evite as visualizações se for um exagero.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. Criação de perfil e ajuste de banco de dados - https://www.drupal.org/project/dbtuner
  21. Use o Boost , não o Bootstrap DB, se não for necessário. https://drupal.org/project/boost Para a maioria dos sites pequenos e médios, o Boost é bom o suficiente e talvez você não precise de Proxies Reverso.
  22. Use CDNs - https://www.drupal.org/project/cdn É fácil de configurar.
  23. Se suas tabelas de cache forem enormes, use o Memcached - Se você pode instalar o memcached e configurar a RAM para ele, não é tão complexo quanto parece.
  24. Etags - Configure Etags corretamente. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Use o servidor proxy reverso - verniz (pelo menos para ativos). Ajuda muito se a maioria dos usuários for anônima.
  26. Transferência compactada - Ativar compactação gzip
  27. Mantenha-se vivo - Use conexões persistentes sempre que possível.
  28. JPEGS progressivo -
  29. CACHE EM CÓDIGO - O blog da Eaton é incrível. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Implementar aquecimento do cache - https://www.drupal.org/project/cache_warmer - Cache Aqueça as páginas antes que o usuário final as atinja.
  31. O Master Slave DB Config - https://www.drupal.org/project/autoslave facilita a configuração de um.
  32. Clusters de banco de dados - /programming/1163216/database-cluster-and-load-balancing
  33. Balanceadores de carga - http://en.wikipedia.org/wiki/Load_balancing_(computing)
  34. Use o aquecimento de cache heurístico - https://www.drupal.org/project/cache_graceful
  35. Cache de Usuário Autenticado - https://www.drupal.org/project/authcache
Gokul NK
fonte
2
Excelente resposta, mas uma coisa que me destaca fortemente é que você não tem a APC no topo. A APC é trivialmente fácil de instalar, não há desvantagens e os ganhos podem ser realmente grandes. Eu acho que deveria ir para o topo. (Talvez com um comentário que não é necessário após PHP 5.5 como a otimização finalmente foi integrado)
Letharion
1
Talvez também mencione algo sobre os ganhos mais fáceis para o armazenamento em cache? Se o seu site exigir principalmente conteúdo estático (as páginas são iguais para todos os usuários, portanto não há logins), o Varnish ou o Boost oferecem os maiores ganhos.
Dominic Woodman
5

A camada do banco de dados é importante. Abordo algumas partes e os princípios básicos desta apresentação http://goo.gl/30yi39

mikeytown2
fonte
Apresentação incrível MikeyTown. Você é o desempenho pro :)
Gokul NK
3

Como companheiro da resposta de Gokul, aqui está a maneira como eu pensaria sobre o que você deseja armazenar em cache no Drupal (não ordenado por complexidade):

Armazenamento em cache significa acelerar atividades repetidas.

As grandes ações de repetição envolvidas em um site Drupal são:

  • Chamando uma página da web
  • Executando código PHP para criar uma página da web
  • Itens de chamada PHP do banco de dados

Armazenando em cache uma página da web inteira

Os maiores ganhos em cache são os de encontrar uma maneira de armazenar em cache uma página inteira da Web sem nunca executar o código PHP ou chamar o banco de dados.

Você pode fazer isso com verniz ou reforço . Quando um usuário chama uma página, ele retorna uma cópia da página sem fazer um cálculo.

No entanto, isso não funcionará se partes da página tiverem que ser diferentes (por exemplo, o login dos usuários e o nome deles aparecer na parte superior).

Para que isso funcione, você precisa procurar no Authcache.

Cache do PHP

Você pode armazenar em cache o PHP com a APC ou, se tiver a versão 5.5 ou superior, um cache diferente será incorporado.

Isso é feito no servidor e significa que partes do seu código PHP serão lembradas. Você está armazenando em cache o PHP para o Drupal, mas não está tecnicamente interagindo com o Drupal.

Cache de banco de dados

As chamadas para obter informações do banco de dados são caras.

O mecanismo mais comum de armazenamento em cache do banco de dados é o memcache .

Isso armazena em cache objetos de banco de dados na RAM; portanto, em vez de fazer uma chamada para um objeto de banco de dados no disco rígido, basta retirá-lo da RAM, que é muito mais rápido.

Dominic Woodman
fonte
1
Redis é também uma grande loja de cache em memória, pelo menos comparável com memcache na minha experiência (embora memcache provavelmente vence com agrupamento)
Clive