Performance e Drupal

12
Performance e Drupal Come individuare i colli di bottiglia della vostra applicazione (ed evitare che ne abbia in futuro)

Transcript of Performance e Drupal

Page 1: Performance e Drupal

Performance e DrupalCome individuare i colli di bottiglia della vostra applicazione (ed evitare che ne abbia in futuro)

Page 2: Performance e Drupal

Chi sono

Vincenzo Di Biaggio@vincenzodb

Software Developer @SparkFabrik - MilanoFB: https://www.facebook.com/sparkfabrik/

Software: https://github.com/vincenzodibiaggioVideogiochi: http://steamcommunity.com/id/vincenzodb/Foto: https://500px.com/vincenzodbMusica: http://www.last.fm/it/user/vincenzodb

Page 3: Performance e Drupal

- Il cliente chiama perchè il sito è lento

- Una volta chiusa la chiamata, l’intero ufficio si riunisce per pregare tenendosi per mano

- Dopo N ore ci si rende conto che si può migliorare la situazione SE si riesce ad identificare il problema

- Identificato il problema, si scrive del codice migliore

Il problema

Page 4: Performance e Drupal

Identificare e circoscrivere il problema / 1

- OGGI diamo per scontato che server e infrastruttura siano adeguati per sopportare il carico

- Le cache sono attive? Anche quelle di views? E quelle dei blocchi?

- CSS e Js vengono aggregati?

- Le immagini vengono gestite con degli opportuni image styles?

- Moduli come update_status o inerenti lo sviluppo (es. devel) sono disattivati?

- Il logging su database è disattivato?

Page 5: Performance e Drupal

Sì, è risposta a tutte le domande?Ora potete iniziare a pregare sul serio

Page 6: Performance e Drupal

Identificare e circoscrivere il problema / 2

- Disattivazione dei blocchi comuni a molte pagine

- Controllo risorse esterne

- Eliminare i dati superflui (field nelle query, field nelle view, ecc)

Page 7: Performance e Drupal

Principali colli di bottiglia

- Non utilizzare molti entity_load (node_load, taxonomy_term_load, ecc.)

- Preferire sempre node_load_multiple

- Se possibile, rimpiazzare i _load con delle query

- Usare il caching di views al meglio

- Utilizzare le differenze tra il caching dei risultati e del rendered output a nostro vantaggio

- Staticizzare i dati necessari frequentemente

- drupal_static se necessari nella stessa richiesta

- Cache Api per dati necessari nel tempo

Page 8: Performance e Drupal

Trovare i colli di bottiglia

La parola chiave è profilare.

Profilare quanto l’applicazione usa il database

Profilare quante volte effettuiamo operazioni identiche

Testare il carico dell’applicazione sui server

Testare l’ottimizzazione del Front End

Page 9: Performance e Drupal

DEMO

Page 10: Performance e Drupal
Page 11: Performance e Drupal

LinksDSC Profiling:

https://gitlab.sparkfabrik.com/vincenzo.dibiaggio/dsc-profiling

YSlow: http://yslow.org/

Google Page Speed: https://developers.google.com/speed/pagespeed/

Developer Toolbar del vostro browser, tab ‘Network’

Extended Statusbar per Firefox

Hints su ottimizzazione delle view: https://www.silviogutierrez.com/blog/optimizing-drupal-views-right-way/

High Performance Drupal (libro): https://www.drupal.org/node/2119971

Page 12: Performance e Drupal

Grazie

Vincenzo Di Biaggio@vincenzodb

Software Developer @SparkFabrik - MilanoFB: https://www.facebook.com/sparkfabrik/