Drupal Performance - AuniTech/DevTips GitHub Wiki

Varnish är en s.k. proxycache som ställer sig innan Apache för att returnera cache sidor extremt snabbt (100x snabbare i Drupals situation). Denna modul integrerar varnish med Drupal för att cleara cachen på sidor. http://drupal.org/project/varnish

Alternative PHP Cache sparar alla php filers kod i ett delat minne för att inte behöva läsa dem när för varje sid rendering. Detta kan ha en enorm prestandaskillnad eftersom en Drupal sida lätt har 2000-3000 php filer. Denna modul integrerar ytterligare en apc cache backend, så att man kan lagra cache tabeller i PHP minne som delas mellan alla processer. http://drupal.org/project/apc

Views caching alternativ är något dåligt eftersom det enbart tillåter att cleara cache per tidsintervall. Följande modul gör det content aware så en views cache clearas när content uppdateras. http://drupal.org/project/views_content_cache

Drupals största performance problem är caching för inloggade användare, detta existerar inte i core och är svårt att förverkliga. Dessutom går det inte att cacha sidor med formulär, t.ex. kommentarsfält. Följande modul kan kombineras med en proxy cache för att hämta specificerade block med AJAX medan resten cachas enligt anonymous users. http://drupal.org/project/cache_control

Drupals cache clearas under cron körningar och är inte direkt konfigurerbar utan clearar allt på en gång. Följande modul spjälker varje cron task så de kan konfigureras skilt och köras olika tider, t.ex. behöver kanske inte xmlsitemap uppdateras varje 15min likt andra. Dessutom kan det sägas att cachen ska clearas kl 2am när så få som möjligt är online. http://drupal.org/project/elysia_cron

Sessions tabeller kan blir enorma i Drupal, detta är för att dess garbage collection körs var 23e dag. Följande modul gör detta till en cron task. http://drupal.org/project/session_expire

Block cache inställningar specificeras enbart i kod, följande modul lägger till en konfiguration i UIn för att ändra detta (per page/user/role eller global) http://drupal.org/project/blockcache_alter

Icke-testat

Möjliggör att cacha anonymous pages som statiska filer, kombinera detta med ngnix och det borde vara nära varnish performance. http://drupal.org/project/boost

Memcache är en in-memory databas som är extremt snabb jämfört med MySQL. Perfekt för cache tabeller. http://drupal.org/project/memcache

Drupals entities har inte stöd för caching (noder har inte, men pages har). Denna modul ger caching till Drupal entities. Fungerade inte på Snellman, men det var länge sen. Skaparen menar mycket allvar. http://drupal.org/project/entitycache

Små performance hacks av en annan allvarlig skapare. Node render caching (30-40% snabbare om memcache används). Förbättrad page cache, cleara ändast cachen för den node/NID som uppdateras/kommenteras, inte alla noders. http://drupal.org/project/performance_hacks

Vet egentligen inget om denna annat än att den lär vara mycket bra. http://drupal.org/project/expire


Vad man bör tänka på att man inte behöver caching i alla lager, då blir det ännu långsammare. T.ex. är entity cache (högst antagligen) onödigt om vi har varnish eftersom entities mycket sällan hämtas. Om modulen är enablead blir varje databas fråga en cache miss och cachen måste skapas, därmed fördröjs sidladdningen.