Etikettarkiv: xdebug

WordPress prestanda 101

Under Sweden Social Web Camp så försökte jag på kort under en session tid förklara hur man kan analysera och hitta flaskhalsar i WordPress gällande prestanda. Så därför försökte jag här sammanfatta det jag pratade om på några rader.

Först och främst så bör du stänga av alla plugins och då se om prestandan fortfarande är dålig, för tyvärr finns det många dåliga plugins (se här då Computer Sweden intervjuade mig och Nikke, år 2009).

Okej, nästa grej att testa är att slå på något cache-plugin i form av W3 Total Cache eller WP Super Cache. Du kan även testa att ”städa upp” i databasen då många plugins lägger temporär eller onödig information i databasen (kommentera om du vet något plugin som gör detta).

Använder du ett cache-plugin så bör du även installera memcached samt titta i källkoden längst ner på sidan hur många SQL-anrop som cachas, exempelvis (skriver WP Super Cache också ut detta?):

Object Caching 730/765 objects using memcached

En annan grej man kan testa är att använda strace direkt från kommandotolken i Linux tillsammans med PHP, ungefär så här:

$ cd /min/blogg/

$ strace php index.php

Så får du lite loggrader utspottade på skärmen och om det står still länge på ett ställe så ser du exakt vad som händer på den raden. Samt så bör du även testa Xdebug så kan berätta exakt vilken rad i PHP-koden som går långsamt, tar lite tid att installera och använda.

Du kan även titta i MySQL:s slow-log som kan aktiveras på eller hittas i /etc/mysql/my.cnf (sök efter log_slow_queries).

Sist men inte minst det som jag brukar göra är att lägga upp Varnish som en front-end proxy framför Apache exempelvis, detta är en helt mer eller mindre transparent lösning. Kom även ihåg att Apache slukar massor av minne jämfört med Nginx som istället kan användas till memcached. Detta är nog det bästa tipset jag kan ge samt att testa använda ett CDN.

Sen finns det så klart mycket man kan göra på själva sidorna som WordPress spottar ut (sprites, javascript etc), men det är utanför detta blogginlägg.

Uppdatering: Glömde skriva två saker som jag nämnde på sessionen, dels är det att använda sig av en OP-code cache typ APC eller eAccelerator samt så kan även URL-strukturen i WordPress slöa ner prestandan.

Sökmotoroptimering

Link Popularity vs. PageRank vs. Yoda

Jag tänkte försöka mig på att förklara vad sökmotoroptimering är för mig och vad jag brukar göra för att underlätta för sökmotorer och människor att ta del av den information som återfinnes på de tjänster eller webbplatser jag utvecklar.

Sökmotoroptimering för mig handlar i grund och botten om god webbsidehygien, vilket kan sammanfattas i ungefär dessa punkter:

  1. Se till att titlar och h1-rubrik matchar innehållet. Inte för lång och inte för kort och så beskrivande som möjligt
  2. Undvik tricks i JavaScript som gör det svårt för Googlebot att hitta länkar
  3. Visa populära inlägg, sökningar eller senaste kommentarer
  4. Sajten måste vara snabb, hitta flaskhalsar med hjälp av Xdebug (läs även min MySQL guide)
  5. Se hur prestandan ser ut i Google Webmaster tools
  6. Se till att 404-sidor verkligen returnerar 404 och att sidor som finnes returnerar HTTP kod 200 (annars indexeras inget)
  7. Använd site: domaännamn.se på Google för att se hur sidorna ser ut hos Google
  8. Skapa sitemap
  9. Använd verktyg såsom AddThis för att underlätta delning till sociala medier
  10. Om möjligt, använd mikrodata
  11. Se till att URL-struktur är fin, ungefär: /detta-ar-en-sida/
  12. Titlar på sidorna skall komma först, sedan namnet på webbtjänsten. Så unika som möjligt
  13. Tagga innehåll eller lägg på annan typ av metadata som underlättar urval
  14. Breadcrumbs

Gillar du detta inlägg? Då rekommenderar jag även att du läser min checklista som jag använder innan lansering som delvis överlappar med denna lista.

Har du något tips som jag missat här?

Uppdatering: Bästa SEO-guiden ever (jpg). Via SSBD

Testa hastigheten på din webbtjänst

För att testa hastigheten på din webbserver så finns det ett antal olika alternativ, jag tänkte presentera några av dem här:

  • Företaget Load Impact som bl.a Rangar Lönn ligger bakom tillhandahåller en ”freeminum”-tjänst där du kan testa hur din webbtjänst klarar belastning.
  • Västerås-företaget (?) Pingdom som är grundat av Sam Nurmi presenterar svarstider på din webbserver på två olika ställen. Dels så får du en graf över de webbservrar som du övervakar samt så kan du testa deras verktyg här: tools.pingdom.com
  • Google Webmaster tools har en sida där du kan få information om hur lång tid det tog för Google Bot’en (nej inte Anna) att ladda din sida.
  • Apache Benchmark (aka ht) som jag bloggade om i Januari 2008
  • xDebug visar hur lång tid individuella sidor tar på sig att laddas och tillsammans med webgrind så får du ett snyggt webbgui som går igenom dina debugg-loggar

Vet du några andra sätt som det är möjligt att testa svarstider? Skriv en kommentar!

Att skriva bra kod

På senare tid så lägger jag mer tid och kraft till att skriva bra (snygg) och snabb kod. Att optimera sin PHP-kod kan spara många millisekunder i exekveringen. Vad pratar jag om då? Jo det finns några bra tips:

Kolla igenom all din kod med xdebug för att hitta långsamma exekveringar/funktioner. Och använd med fördel memcached, Sphinx och eAccelerator. Kasta bort Apache och titta istället på nginx och lighttpd. Jag har tidigare skrivit om hur du optimerar MySQL.

Det lönar sig att göra rätt från början!