Come posso migliorare le prestazioni del mio sito Drupal7? [chiuso]


10

Per qualcuno che è nuovo su Drupal, vedo che ci sono molte risorse disponibili su Drupal Caching, ma non sono sicuro di quale di esse utilizzare.


1
Possiamo discutere se vogliamo una domanda canonica per questo su meta, ma penso ancora che sia troppo ampia. E i miglioramenti delle prestazioni possono essere molto sensibili al contesto e non possono essere fatti nel vuoto.
mpdonadio

Risposte:


26

Queste sono note delle mie esperienze e potrebbero variare rispetto a quelle degli altri. Uso principalmente lo stack LAMP e ho considerato lo stesso nei miei suggerimenti.

Regole del pollice per la memorizzazione nella cache che generalmente seguo.

  1. Elabora una volta Utilizzare più volte.
  2. Vivi con dati non aggiornati quando possibile
  3. Cancella le cache di rado e mantienile molto specifico.
  4. Quando possibile, apportare le modifiche al livello più basso nella pila. LAMPADA - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib e modulo personalizzato.

Migliorare le prestazioni di un sito Drupal (in ordine crescente di complessità)

  1. Tieni aggiornato il core, il modulo contrib e i temi aggiornati. Sì, è importante.

  2. Installa APC sul tuo server. (Spostato all'inizio in base al suggerimento di Letharion)

  3. Caching delle pagine: admin / config / development / performance Differenza tra durata minima della cache e scadenza delle pagine memorizzate nella cache

  4. Blocco nella cache https://drupal.org/project/blockcache_alter Opzioni di memorizzazione nella cache per tutti i blocchi.
  5. File javascript e css aggregati - Miglioramenti del front-end https://www.drupal.org/project/advagg
  6. Disabilita i moduli non necessari. Ogni modulo aggiunge la quantità di codice che deve essere disponibile per un caricamento della pagina. E aumenta anche il numero di ricerche. Laddove possibile, utilizzare un modulo generico al posto di più moduli che svolgono funzionalità specifiche.
  7. Contenuto di Cache Views: memorizzazione nella cache con riconoscimento dei contenuti per Views https://www.drupal.org/project/views_content_cache
  8. Disabilita registrazione DB - Usa https://drupal.org/project/syslog_ng
  9. Ridurre gli errori 404 - http://www.brokenlinkcheck.com/
  10. 404 risposte rapide - https://drupal.org/project/fast_404 - Prova a gestirlo a livello di server.
  11. Convalide lato client - https://www.drupal.org/project/clientside_validation
  12. Comprimi immagine - https://www.drupal.org/project/imageapi_optimize
  13. Caricamento pigro delle immagini - Non caricare immagini non necessarie - https://www.drupal.org/project/lazyloader
  14. Usa Sprite Sheets - https://www.drupal.org/project/spritesheets

  15. Imposta il Valore minimo della durata della cache su un numero più alto e usa i moduli di cancellazione della cache per cancellare le cache per pagine specifiche - Ogni volta che modifico / aggiorno un nodo, tutte le cache delle pagine per utenti anonimi vengono perse

  16. Usa il modulo Devel per guardare le domande.
  17. Riscrivi query Views / evita Views se è eccessivo.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. Profilazione e messa a punto DB - https://www.drupal.org/project/dbtuner
  21. Usa Boost , non Bootstrap DB se non richiesto. https://drupal.org/project/boost Per la maggior parte dei siti medio-piccoli, Boost è abbastanza buono e potresti non aver bisogno di proxy inversi o giù di lì.
  22. Usa CDN - https://www.drupal.org/project/cdn È facile da configurare.
  23. Se le tue tabelle di cache sono enormi usa Memcached - Se puoi installare memcached e configurare la RAM per esso, non è così complesso come sembra.
  24. Etags: configura Etags correttamente. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Usa Reverse Proxy Server - Varnish (almeno per le risorse). Aiuta molto se la maggior parte dei tuoi utenti è anonima.
  26. Trasferimento compresso - Abilita la compressione gzip
  27. Mantieni vivo: utilizza connessioni persistenti ove possibile.
  28. JPEG progressivi -
  29. CACHING IN CODICE - Il blog di Eaton è fantastico. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Implementare il riscaldamento della cache - https://www.drupal.org/project/cache_warmer - Cache Warm the page prima che l'utente finale li colpisca.
  31. Master Slave DB Config - https://www.drupal.org/project/autoslave ti semplifica la configurazione.
  32. Cluster di database - /programming/1163216/database-cluster-and-load-balancing
  33. Load Balancers - http://it.wikipedia.org/wiki/Load_balancing_(computing)
  34. Utilizza il riscaldamento euristico della cache - https://www.drupal.org/project/cache_graceful
  35. Caching utente autenticato - https://www.drupal.org/project/authcache

2
Risposta eccellente, ma una cosa che mi distingue fortemente è che non hai APC al top. APC è banalmente facile da posizionare, non ci sono aspetti negativi e i guadagni possono essere davvero grandi. Penso che dovrebbe andare in cima. (Forse con un commento che non è necessario dopo PHP 5.5 poiché l'ottimizzazione è stata finalmente integrata)
Letharion

1
Magari menzionare anche qualcosa sui vantaggi più semplici per la memorizzazione nella cache? Se il tuo sito richiede principalmente contenuti statici (le pagine sono uguali per tutti gli utenti, quindi nessun accesso), Varnish o Boost offrono i guadagni maggiori.
Dominic Woodman,

5

Il livello del database è importante. Ne tratterò alcune parti e le basi di questa presentazione http://goo.gl/30yi39


Presentazione straordinaria MikeyTown. Sei il professionista delle prestazioni :)
Gokul NK,

3

Come compagna della risposta di Gokul, ecco il modo in cui penserei a cosa vuoi memorizzare nella cache di Drupal (non ordinato dalla complessità):

La memorizzazione nella cache significa accelerare le attività ripetute.

Le grandi azioni ripetute coinvolte in un sito Web Drupal sono:

  • Chiamare una pagina Web
  • Esecuzione di codice PHP per creare una pagina Web
  • PHP chiama elementi dal database

Memorizzazione nella cache di un'intera pagina Web

I maggiori guadagni nella cache si ottengono dalla ricerca di un modo per memorizzare nella cache un'intera pagina Web senza mai eseguire il codice PHP o chiamare il database.

Puoi farlo con Varnish o Boost . Quando un utente chiama una pagina, restituisce una copia della pagina senza mai effettuare un calcolo.

Tuttavia, ciò non funzionerà se parti della pagina devono essere diverse (ad esempio, gli utenti accedono e il loro nome appare in alto).

Per farlo funzionare devi esaminare Authcache.

Caching PHP

È possibile memorizzare nella cache PHP con APC o, se si dispone della versione 5.5 o successiva, è integrata una cache diversa.

Questo viene fatto sul lato server e significa che verranno ricordati pezzi del tuo codice PHP. Stai memorizzando nella cache PHP per Drupal ma non interagisci tecnicamente con Drupal.

Memorizzazione nella cache del database

Le chiamate per ottenere informazioni dal database sono costose.

Il meccanismo di memorizzazione nella cache del database più comune è memcache .

Questo memorizza nella cache gli oggetti del database nella RAM, quindi invece di effettuare una chiamata a un oggetto del database sul disco rigido, è sufficiente estrarlo dalla RAM, che è molto più veloce.


1
Redis è anche un ottimo archivio di cache in memoria, almeno paragonabile a memcache nella mia esperienza (anche se memcache probabilmente vince con il clustering)
Clive
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.