2009-02-21 3 views
15

Sto lavorando su un sito basato su Drupal e noto che ci sono molti file CSS e js separati. Guadare un po 'del codice posso anche vedere alcuni casi in cui vengono utilizzate anche molte query.Scaling Drupal

Quali tecniche avete cercato di migliorare le prestazioni di Drupal e quali moduli (se presenti) si usa per migliorare le prestazioni di 'out of the box' Drupal?

risposta

21

Andando alla pagina di amministrazione/impostazioni/prestazioni, attivando l'aggregazione CSS e JS e il caching delle pagine con una durata minima di 1 minuto, si otterrà un impulso immediato su un sito ad alto traffico. Se stai scrivendo il tuo codice e stai facendo qualche domanda, considera la possibilità di scrivere il tuo discreto caching for expensive functions. L'articolo collegato copre Drupal 5, non 6, ma l'unica modifica in d6 è l'elimia del requisito di serializzazione e la firma della funzione per le funzioni cache_set() e cache_get(). (Entrambe annotate nei commenti all'articolo)

Su siti di grandi dimensioni, prendere in considerazione la possibilità di rilasciare un server memcached sulla rete: utilizzando il modulo memcached, è possibile ignorare completamente il database drupal per i dati memorizzati nella cache. Se hai enormi quantità di contenuti e la ricerca è un punto caldo, puoi anche considerare l'utilizzo di lucene/solr come indicizzatore di ricerca invece dell'indicizzatore di ricerca incorporato di drupal. È bello per un indicizzatore incorporato ma non è progettato per carichi pesanti (centinaia o migliaia di nuovi pezzi di contenuto all'ora, ad esempio, con una ricerca sfaccettata pesante). Il modulo apache solr può collegarsi a quello.

Se stai facendo uso pesante di Vista, assicurati di aver controllato le query che genera per i campi non indicizzati; l'ordinamento e il filtro in particolare dai campi CCK possono essere lenti, poiché CCK non aggiunge automaticamente indici oltre alle chiavi primarie. In D6, visualizza l'anteprima nella schermata di amministrazione, copia il testo della query ed eseguilo tramite EXPLAIN in mysql o qualsiasi altro strumento di analisi delle query che hai.

Strumenti come YSlow e Firebug può anche aiutare a individuare roba lento come file di immagini enormi, JS ospitati su server remoti, e così via.

+1

Vorrei anche aggiungere un po 'su come impostare la memorizzazione nella cache dei blocchi, che consente di memorizzare nella cache il contenuto anche per gli utenti registrati, poiché la memorizzazione nella cache della pagina interessa solo quelli anonimi. –

5

Drupal 6, out-of-the-box, fornisce l'aggregazione css e javascript --- la maggior parte dei file css e js saranno combinati in un singolo file (e quindi una singola richiesta HTTP), e sono anche accorciati in bianco (per ridurre il consumo di larghezza di banda). Puoi abilitare questo sotto/admin/settings/performance.

anche su quello schermo sono controlli per (molto efficace) la cache di Drupal, che aiuta a ridurre il numero di query di database.

Inoltre, poiché Drupal (e tutti i moduli che probabilmente avrete installato) ha un sacco di sorgenti PHP, l'uso di una cache opcode PHP come APC aiuta a ridurre significativamente il tempo di richiesta.

0

Sono fermamente seconda raccomandazione di Benedetto del modulo Boost - da solo renderà il vostro sito web volare su hosting condiviso, se configurato correttamente, e non è davvero buggy a tutti.

Accendere CSS/JS aggregazione, accendere Boost, e il sito può eseguire molto bene per gli utenti anonimi.

Se il tuo sito si occupa principalmente di utenti registrati, dovrai fare molto più lavoro assicurandoti che le sessioni siano memorizzate correttamente nella cache, e probabilmente prendere in considerazione l'uso di memcached e più cache di query SQL.

I maggiori guadagni in termini di prestazioni derivano sempre dal caching, ma il monitoraggio e l'adeguamento delle query lente, il monitoraggio e la regolazione delle configurazioni di apache e PHP e l'attenzione sui moduli che si utilizzano sono molto importanti.

+0

Sto lavorando a un Drupal Performance Whitepaper di questo tipo sul mio sito Web - solo offrendo questo come un buon muro di idee per migliorare le prestazioni del sito su tutta la linea: http://www.lifeisaprayer.com/articles/web-design/2010/drupal-prestazioni-white-paper – geerlingguy

0

Altro che la cache di default Drupal, ci sono alcuni un altro metodo per aumentare le prestazioni

modulo Boost è uno dei migliori. memcache, Varnish (Drupal 7/Pressflow), CDN sono gli altri metodi che possono migliorare le prestazioni

0

Vale anche la pena ricordare l'aumento delle prestazioni dall'utilizzo di archiviazione SSD di qualità. Ha costantemente ridotto i tempi di caricamento della risposta iniziale del 30% o più durante la migrazione a SSD (sono passato da circa 450 ms a ~ 250 ms nel mio ultimo progetto, utilizzando identiche configurazioni Apache/Memcache/Cloudfront EC2), per non parlare di quanto sia più bello è quello di gestire un server scattante in cui ogni comando o script che ci passi è quasi istantaneo. Non tornerò mai più.