Sæt fart på din WordPress blog med Caching, GZIP, Minify & CDN
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 🙂
Det skal jeg da prøve. Tak for hjælpen. Håber det kan hjælpe min WP-blog til at blive hurtigere.
Mvh.
@Camilla, du kan evt. kigge her først http://densynligemand.dk/load-tid-wordpress-blog/ – det vil være gode ting at få på plads inden du går videre til caching delen.
Hej igen, Claus!
Som tidligere nævnt har jeg haft store problemer med at finde et fornuftigt cache-plugin, fordi min host (Surftown) kører med safe mode on; men nu er det lykkedes.
Hypercache — utroligt nemt at installere og resultaterne er indtil videre fornemme.
Ingen fejl, så vidt jeg kan se, og loadtider, der er rykket med 30-200% — i den rigtige retning.
Så er der håb for dem af os, der ikke kan få W3 Total til at spille fornuftigt.
Alt godt,
Kasper
Hej igen, optimerings-Claus! 🙂
Du skulle vel ikke have gjort dig nogle erfaringer med opcode caching og MySQL-cahing?
Jeg har over de sidste par dage eksperimenteret lidt med Xcache, eAccelrator og APC; hvor valget er faldet på sidstnævnte. Alle tre integrerer sig fint med W 3 Total Cache.
Derudover overvejer jeg også — mest for skæg — at gå i gang med at afprøve alternativer til Apache, som har ry, så vidt jeg kan læse mig til, for at være temmelig tung i måsen. Nginx og Lighttpd står for skud.
Mit mål er at komme ned på under 1 sekund i load tid på undersider; og det lykkes af og til; men for at det skal nås på et strukturelt plan, er der lidt vej igen.
Amazon CloudFront har ikke virket godt for mig mht. loadtider, connect-tiden er for ringe.
Nu overvejer jeg at lave mit eget CDN på en ekstern server, som leverer statisk indhold via lighttpd eller nginx.
Mere følger, måske — særligt hvis eksperimenterne går godt.
Endnu engang tak for at få sparket mig i gang!
Kasper
uha Kasper, nu graver du dybt 🙂 Du er gået videre end jeg reelt er nået mht. at tænkte i andre serversoftware valg. Men ja har hørt godt om dem du nævner.
Efter længere tids brug er jeg enig i din konklusion med CloudFront – ved nye CDN’er vil jeg også bare bruge en ekstern DK host og hoste mine filer der.
Cloudfront bliver først smart når man har brugere fra hele verden.
1 sec er også min skæringsgrænse for loadtid, men det afhænger en del af hosten og deres HW/SW version og forbindelse. Så nogen steder er det umuligt at kommer derned i loadtid.
Og ja jeg bruger også APC eller blot memcache – APC forbruger dog en del mere ram på serverside. De andre du nævner har jeg ikke fået testet så meget.
Ja meld endelig tilbage med de ting du finder ud af 🙂
Tak for superhurtig respons, Claus!
Ja, jeg tror måske, jeg har været igennem den samme proces, du var igennem, da du købte den dedikerede server for noget tid siden.
Jeg købte en lille VPS for at blive klogere på LAMP, men kom ikke rigtigt nogen vegne i forhold til loadtid.
så købte jeg en der var lidt større (512 mb ram) og nåede et stykke.
Nu er jeg ved at være nogenlunde sikker på egne evner og overblik — og backups og et fornuftigt graceful failover-setup — så jeg har opgraderet til 2gb ram 1gb burst — og er stille og roligt gået i gang med at flytte sites over.
Indtil videre holder jeg mig til Apache for rewrite-regler med Nginex og Lighttpd vækker vist lidt bøvl med (fx med W 3 Total Cache).
Men alt i alt meget spændende!
/Kasper
Ja det er sgu næsten samme process vi har været igennem der 🙂 Jeg er også på 2gb ram nu på serveren, men tror ikke det er nok med de tunge sider jeg smider på den.
Men spændende at du arbejder videre med tuningen – håber du sender en besked hvis du rammer noget godt 🙂
Er du vimmer, “Kurt” / københavnske spisesteder — linkspammer danske blogs for tiden!
Tak, den er hermed spammet og holder øje med spammeren “københavnske spisesteder” i fremtiden 🙂
Jeps. Det er træls!
Der er også forsøgt hos mig, men jeg har ikke automatisk godkend på kommentarer, så jeg trykkede “spam” i stedet for.
Jeg har lige et forslag til denne og fremtidige multi-post guides du laver. I bunden af guiden, burde der være et link til næste “del” af guiden, således at læseoplevelsen bliver mere flydende.
– Bare et forslag 🙂
Voldsomt godt plugin, bruger det også på mine sider nu.
Tak for det!
@Malte: Glæder mig du kan bruge det 🙂
Det plugin vil jeg da tjekke ud. Tak for tippet 🙂
Hilsen
Frederik
Jeg har haft installeret W3 Total Cache på 2-3 sites hvor jeg ikke har kunne mærke en forskel overhovedet. Kan det skyldes at min hjemmeside er hosted ude i byen, hvor jeg ikke har mulighed for at tweake specielt meget.
@Laust: Denne guide er også til hosting ude i byen. Mener det er fra Unoeuro.
Husker du at teste din side som “logget ud” – hvis du prøvet at besøge siden mens du er logget ind, vil du ikke mærke forskel.
Og ellers kan jeg kun anbefale at teste dig lidt frem – der vil med garanti være noget at hente i loadspeed med dette plugin
Hej Claus,
Har efterhånden været forbi et par forskellige gennemgange af diverse WordPress cache plugins da jeg synes det godt kan være lidt uoverskueligt – og samtidig svært at se forskellen på loadhastigheder når man tester på tværs af diverse online værktøjer.
Er dog rigtig fedt at læse dine erfaringer og eksempler med bl.a. CDN.
Fedt indlæg. Jeg sad og ledte efter noget, der kan være med til at forbedre load-hastigheden på egne sider.