SlideShare a Scribd company logo
Speeding up WordPress
@BRECHTRYCKAERT
Brecht Ryckaert
• WORKS @ COMBELL.COM
• WP USER SINCE 1.5
• SPECIALIZED IN SECURITY &
OPTIMIZATION
• WROTE A BOOK
Coming SOON!
 Laat uw e-mailadres na op
wpsecurity101.com en krijg een
kortingscode (-50%) in de
lanceringsweek!
FEIT!
De gemiddelde bezoeker verlaat
je website als deze binnen de 3
seconden niet geladen is !!!
Wanneer we een
nieuwe site lanceren
of publiceren,
verwachten we dus dit...
Speeding up WordPress
Maar occasioneel krijgen
we dit...
Speeding up WordPress
Speeding up WordPress
WAAROM ?!?
STAP 1
MET FIREBUG & PAGESPEED
ANALYSE
Firebug voor Mozilla Firefox
Tabblad “Net”
Tabblad “Net”
Tabblad “Net”
Tabblad “Net”
Tabblad “Net”
Tabblad “Net”
Idealiter...
 30 tot 50 elementen
(concurrent browser connections)
Concurrent Browser Connections
 Beperkende factor in
laadtijd bij mobiele en
oudere browsers
 Bepaalt het maximum
aantal elementen dat
simultaan geladen kan
worden
Concurrent Browser Connections
Te veel requests!
Idealiter...
 30 tot 50 elementen (concurrent browser
connections)
 0.5 tot 1.5 MB
Concurrent Browser Connections
Te groot!
Grootte afbeeldingen
Grootte afbeeldingen
Grootte afbeeldingen
Pagespeed Insights
Pagespeed Insights
Grootte afbeeldingen
Concurrent Browser Connections
Te groot javascript!
STAP 2 OPTIMALISATIE
Concurrent Browser Connections
 Beperkende factor in
laadtijd bij mobiele en
oudere browsers
 Bepaalt het maximum
aantal elementen dat
simultaan geladen kan
worden
Concurrent Browser Connections
 Domain Sharding
images => img.domain.extension
js => js.domain.extension
css => css.domain.extension
 Elk domein/subdomein krijgt x-aantal concurrent
connections => sneller inladen alle elementen
Performance over functionality!
 Evalueer functionaliteiten of ze echt wel noodzakelijk zijn voor de werking
van je website.
 Is de extra gimmick ook de extra laadtijd waard?
 Verzwarende factoren:
- Video background
- Multimedia sliders
- ...
Optimaliseer foto’s vooraf
 Verklein de resolutie zo sterk mogelijk (upload nooit foto’s die rechtstreeks
van de camera komen!!!)
 Pas een sterke compressie toe (30% bij jpg)
Optimaliseer foto’s vooraf
Optimaliseer Database
 Kleinere database = snellere responstijden
 WordPress zorgt echter standaard voor een nogal “vervuilde database”.
=> bijhouden revisies, posts/pagina’s in trash, spam comments, ...
Optimaliseer Database
 https://wordpress.org/plugins/rvg-optimize-database/
Caching plugins
 Houden bepaalde zaken in RAM of op DISK
 Geen nieuwe database query nodig.
 Serveren meestal vooraf gegenereerde HTML output = SNEL!
 Heel wat keuze binnen de WordPress plugin repository!
Caching plugins
 WP Super Cache
 W3 Total Cache
 WP Fastest Cache
 Gator Cache
 Blunt Cache
 Next Level Cache
 ....
Caching Plugins
Ik gebruik geen van deze!
My preferred caching plugin!
 For small sites:
Wordfence!
Wordfence’s Falcon Engine
https://ma.ttias.be/benchmarking-the-performance-of-wordfence-a-wordpress-plugin/
STAP 3 SERVER SIDE
Beperkende Server Settings
 MAX CLIENTS
Apache server setting – Definieert harde limiet aantal simultane
bezoekers.
Overschrijven van deze limiet = ontstaan wachtrij!
Beperkende Server Settings
 MAX CONNECTIONS
MYSQL server setting – Definieert harde limiet aantal simultane database-
verbindingen.
Overschrijven van deze limiet = “Unable to connect to database”!
STAP 4
SERVER SIDE
OPTIMALISATIE
GZIP Compression
GZIP Compression
GZIP Compression
Enable GZIP compression
 Toevoegen aan .htaccess:
#ENABLE GZIP COMPRESSION
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
Entity Tags
 Entity Tags zijn een mechanisme waarmee gecontroleerd kan worden als
de zaken in de browsercache overeen komen met deze op de server. Het
uitschakelen van deze entity tags kan zorgen voor een lagere laadtijd,
betere performantie én een lagere serverload.
 Toevoegen aan .htacces:
#Disable Entity Tags
Header unset Etag
FileETag None
Mod_Expires
 Hiermee kunnen we controle nemen over de browsercache en stipuleren hoelang iets in cache moet blijven.
Voeg hiervoor volgende toe aan de .htaccess:
# BEGIN Expire headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 5 seconds“
ExpiresByType image/x-icon "access plus 2500000 seconds“
ExpiresByType image/jpeg "access plus 2500000 seconds“
ExpiresByType image/png "access plus 2500000 seconds“
ExpiresByType image/gif "access plus 2500000 seconds“
ExpiresByType application/x-shockwave-flash "access plus 2500000 seconds“
ExpiresByType text/css "access plus 600000 seconds“
ExpiresByType text/javascript "access plus 200000 seconds“
ExpiresByType application/javascript "access plus 200000 seconds“
ExpiresByType application/x-javascript "access plus 200000 seconds“
ExpiresByType text/html "access plus 600 seconds“
ExpiresByType application/xhtml+xml "access plus 600 seconds“
</IfModule>
Hotlinking tegengaan
 Hotlinking zorgt niet voor traffiek op uw site, maar wel voor verhoogde load op de webserver.
 Dit heeft dus wel een impact op de laadtijd van uw website!
 Toevoegen aan .htaccess:
#Disable Hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?sparringmind.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?google.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www.)?feeds2.feedburner.com/sparringmind [NC]
RewriteRule .(jpg|jpeg|png|gif)$ – [NC,F,L]
Caching
 APC
 REDIS
 Beschikbaarheid verschilt per server/hostingbedrijf.
Informeer bij uw hoster!
APC
 Alternative PHP Cache (=APC)
 Draait op de server zelf (local) & “just works”!
 Cache opgeslagen in RAM
 In te schakelen via PHP configuratie
 Vervolgens “APC” selecteren in je caching plugin (indien vereist)
REDIS
 Vereist afzonderlijke REDIS instance
 REmote DIctionary Server (=REDIS)
 In-memory, key-value based cache
 Vereist aanpassing aan de WordPress core files om werkend te krijgen (bij
handmatige setup).
 Makkelijker te implementeren via plugin:
https://wordpress.org/plugins/redis-cache/
STAP 5
OFF SERVER
OPTIMALISATIE
Localisatie bezoekers
 Hou rekening met je bezoekers
 Neem hosting af met datacenter in het beoogde doelgebied
Implementeer een CDN
Implementeer een CDN
 CDN / Content Delivery
Network
 Lokale kopie van je site in
verschillende datacentra
wereldwijd.
Altijd wel één in de buurt van
je bezoeker => lagere laadtijd!
 Cloudflare heeft een gratis
plan (met inbegrepen security
measures)!
”
“
Zijn er nog vragen?
Bedankt!
Twitter: @brechtryckaert
Mail: brecht@mediagraaf.be
Blog: brechtryckaert.be

More Related Content

Speeding up WordPress