際際滷

際際滷Share 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 fotos vooraf
 Verklein de resolutie zo sterk mogelijk (upload nooit fotos die rechtstreeks
van de camera komen!!!)
 Pas een sterke compressie toe (30% bij jpg)
Optimaliseer fotos vooraf
Optimaliseer Database
 Kleinere database = snellere responstijden
 WordPress zorgt echter standaard voor een nogal vervuilde database.
=> bijhouden revisies, posts/paginas 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!
Wordfences 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