Sæt fart på din Wordpress blog med Caching, GZIP, Minify & CDN
Skrevet af Claus Heinrich den 13. januar 2010 klokken 5:20
Hastigheden på hjemmesider er i dag blevet et centralt emne - udover det giver brugere en bedre oplevelse af ens side, så får man faktisk også fordele i søgemaskiner som Google ved have en hurtig side. (Hastighed indgår som en faktor i beregningen af hvor din hjemmeside skal placeres i søgeresultaterne).
Dette kan du opnå vha. Caching der yderligere har den fordel at det kraftigt nedsætter dit forbrug af server ressourcer ved at kunne give brugerne cached filer i stedet for at alle brugere laver deres egne database/fil kald når en side besøges. Det betyder at din hjemmeside vil være meget bedre rustet til at håndtere store spikes af trafik. (Kendt som Digg effekt).
Jeg har delt Caching, GZIP, Minify & CDN guiden lidt op i punkter pga. omfanget.
- Introduktion til caching, GZIP, Minify & CDN (Den du læser nu)
- Opsætning af W3 Total Cache
- Opsætning af CDN (Content Delivery Network)
- Forbind W3 Total Cache og CDN
Jeg har tidligere benyttet et kendt plugin (WP Super Cache) til mine Wordpress blogs for at cache/komprimere mine data og det har da givet en positiv effekt.
Men for en lille uges tid siden faldt jeg over et nyt og helt fantastisk plugin til Wordpress - W3 Total Cache, der slår WP Super Cache med længder. Du får masser af muligheder for at indstille det netop til din brug og jeg vil garantere dig at du kan nedsætte loadtiderne på din egen blog. (ved korrekt opsætning naturligvis).
For at nævne lidt af mulighederne med W3 Total Cache plugin:
- Caching via diskcache/memcache/APC af dine sider, filer og RSS feed.
- Komprimering via gzip+deflate af tema, plugins, CSS, JavaScript filer.
- Minify dine CSS/JS/HTML/Feed + mulighed for at kombinere og gruppere CSS/JavaScript for at reducere DNS opslag. (kræver PHP 5)
- Cacheing af database kald.
- Mulighed for nemt at bruge CDN. (Content delivery network)
Hvert punkt giver dig masser af muligheder for at indstille dem til efter dine behov. De vil alle på forskellige måder kunne hjælpe med at forbedre hastigheden af din blog og samlet kan de faktisk rykke en hel del.
Jeg har lige lavet et par målinger med YSlow på et par af mine egne blogs du kan se herunder - kan give et billede af effekten når det er nogenlunde tunet. (Der er nu stadig masser af plads til forbedringer på begge blogs, så forventer at kunne lave endnu bedre tider)
| Målinger af Snyd.dk (Hvert tal er sekunder, beregnet gennemsnit af 10 målinger) | ||||
| Side / Step | Forside | Kategori | Indlæg | Søgning |
| Uden brug af Cache | 6,9 | 6,2 | 8,0 | 6,5 |
| Med WP Super Cache | 5,8 | 5,0 | 6,9 | 5,1 |
| Med W3 Total Cache | 3,1 | 2,9 | 3,4 | 2,8 |
| W3TC + CDN | 1,5 | 1,8 | 2,0 | 1,3 |
| Målinger af Linkfeed.dk (Hvert tal er sekunder, beregnet gennemsnit af 10 målinger) | ||||
| Side / Step | Forside | Kategori | Indlæg | Side uden billeder |
| Uden brug af Cache | 7,7 | 4,6 | 4,7 | 2,9 |
| Med WP Super Cache | 6,5 | 4,0 | 4,3 | 2,0 |
| Med W3 Total Cache | 4,4 | 2,1 | 2,1 | 0,5 |
| W3TC + CDN | 4,0 | 2,0 | 1,9 | 0,4 |
CDN har ikke den voldsomme impact på Linkfeed.dk, men det er også et tema uden meget grafik i. Desuden sløves siden af den screenshot-udbyder jeg pt. benytter. (dog har jeg fundet muligheder for caching af de screenshots - noget jeg vil rode med når tiden tillader det)
Du kan ud fra tabellen se at det godt har kunne betale sig at benytte dette plugin - det har reduceret hastigheden gevaldigt for begge eksempler. Snyd.dk er en blog der på gode dage har mere end 8000 brugere/40000 sidevisninger. At kunne tilbyde en hurtigere side til de brugere er rigtig vigtigt. Både for deres oplevelse af siden, men også mht. ressource forbruget på serveren. At søgemaskinerne så også giver lidt bonus til hurtigere sider er en rigtig lækker sidegevinst.
W3 Total Cache kan nu godt bruges direkte ved blot at aktivere det, men de helt store fordele kommer ved at tweake alt til og det kan man sagtens komme til at bruge mange timer på.
Du kan få inspiration og opsætnings eksempler ved at følge de forskellige guides jeg har i toppen af dette indlæg. (Udbygges løbende)
Læsestof:
- W3 Total Cache (officielle side)
- Guide i caching af almindelige PHP sider "Martin Nielsen"
Ressourcer:
- W3 Total Cache til Wordpress (download)
- Firebug (Firefox plugin - et must for udviklere og optimering)
- YSlow (Firebug addon - Analysere din side og giver forslag til forbedringer)
- [Video] High Performance Web Sites and YSlow (1 time, fra 2007, men relevant)


Super lækker gennemgang Claus – og fint du har delt den op i flere, glæder mig til de sidste afsnit også.
Vil anbefale alle Wordpress brugere at følge disse anvisninger, da jeg tydeligt kan se stor forbedring i loadtid på et par af Claus’ projekter!
Ingen undskyldning bare se at komme igang folkens!
Hej Claus, dette er netop indlægget jeg har ventet med “længsel” på, da jeg gerne vil have optimeret egen blog.
Så ved jeg også, hvad jeg skal lave, når jeg kommer hjem fra arbejde
Ps. Prøvede at rode med et pluging ved navn WP-Minify igår, men den kunne jeg simpelthen ikke få til at virke – sikkert fordi den kun understøttes til og med WP 2.8.4. – Og jeg bruger 2.8.6
Super indlæg. Det vil jeg bestemt kigge nærmere på når jeg får et ledigt øjeblik.
Dælme et godt indlæg, som jeg længe selv har ville skrive
.
Fedt at se klare facts om, at loadtiden virkelig falder ved brug af de cache plugins. At minimere loadtid med 400%, det må siges at være en væsentlig forbedring.
glæder mig til at læse resten i serien..
Uh, det tegner til at blive en topklasse-serie det her.
Jeg har dog en forhåndsanke. Er der ikke nogle ulemper ved caching på blogs, hvor man gerne vil have interaktion med sine brugere i form af kommentarer? (at brugerne ikke nødvendigvis ser de nyeste kommentarer, fordi cachen ikke er opdateret).
Fantastisk hjælp…
Det er da klart noget, som jeg skal have testet på nogle af de blogs, jeg har liggende rundt omkring…:D
Fedt i kan bruge det og tak for de rigtig pæne ord fra jer alle.
@Frank: Jo der kan godt være situationer hvor du ikke vil cache filer, men det kan man heldigvis nemt specificere i netop W3TC og holde enkelte filer uden om caching.
Lige mht. kommentarer så laver den en ny cache efter en kommentar godkendes, så det vil ikke påvirke noget der.
Claus, det her er for genialt. Når denne kommentar er skrevet, vil jeg læse dit andet indlæg om opsætningen af W3TC, og så skal der bare optimeres loadtider på bloggen.
Jeg glæder mig til at læse med i dine andre posts også. Top klasse!
Hej Claus
Tak for det. Det hjalp gevaldigt på loadtiden