Zo optimaliseer je de snelheid van je website - deel 3 - Server optimaliseren

Zo optimaliseer je de snelheid van je website - deel 3 - Server optimaliseren

 

24-08-2021 - In deel 3 van deze 3-delige artikelreeks helpen we om webpagina's te optimaliseren via serverinstellingen. Of je nu een website, een e-shop of een online toepassing hebt, de snelheid ervan is een belangrijke factor in de gebruikservaring en het succes.

Een snelle website zorgt voor gelukkige lezers, klanten en gebruikers. Waar tot enkele jaren geleden de vuistregel was dat een webpagina binnen 3 seconden moest laden, zijn internetgebruikers intussen een stuk veeleisender geworden. En dat is direct ook zichtbaar in de resultaten van een webshop: iedere halve seconde dat een webpagina sneller inlaadt zorgt voor significant meer sales en meer tevreden bezoekers.

Een bijkomende reden om kritisch naar de laadsnelheid te kijken is de update die Google van zijn zoekmachine uitrolt sinds mei van dit jaar: de Page Experience Update. Die aanpassing draait vooral rond de snelheid en gebruikservaring : de core web vitals. Websites die goed scoren op die parameters zullen extra beloond worden met een goede positie in de zoekresultaten. Daarnaast wordt in de update van het zoekalgoritme ook meer aandacht gegeven aan mobiele websites, veilige websites en websites met https. Websites met opdringerige advertenties worden afgestraft.

In dit derde artikel gaan we verder in op de optmalisatie van de configuratie van de webserver.

 

Comprimeer bestanden

Een webserver stuurt bestanden door naar een browser over het http-protocol. Om de laadsnelheid te verbeteren en bandbreedte te besparen kunnen die bestanden gecomprimeerd worden. Zo goed als alle browsers ondersteunen de gzip-compressie methode. Een andere veel gebruikte compressiemethode is Brotli.

Van tekstgebaseerde bestanden als HTML, CSS en Javascript kan je gemakkelijk de grootte reduren met 50 tot 80%. Afbeeldingen worden vaak al vooraf gecomprimeerd in een grafisch programma en daarom heeft het comprimeren op de webserver weinig effect.

Je kan controleren of er al compressie actief is via deze online tool:
https://www.giftofspeed.com/gzip-test/

 

Apache

In de webserver configuratie kan deze code toegevoegd worden :

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

Na het aanpassen van het apache configuratiebestand, is het nodig op apache te herstarten om de compressie te activeren.

Als je zelf geen toegang hebt tot de configuratiebestanden van apache, dan kan je ook via het .htaccess bestand de compressive toevoegen met deze code :

<ifModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

 

Nginx

Maak een nieuw configuratiebestand compression.conf aan in de conf.d folder van nginx. Die folder kan je vinden onder /etc/nginx/.

nano /etc/nginx/conf.d/compression.conf
(Als er geen conf.d-folder is, dan kan je de onderstaande code toevoegen in het nginx.conf bestand)
gzip on;
gzip_http_version 1.1;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;

Bewaar het bestand en laad de nieuwe configuratie in:

sudo service nginx reload

 

Activeer HTTP/2

HTTP/2 is de opvolger van het HTTP protocol. Het nieuwe protocol laat toe om over dezelfde verbinding meerdere bestanden door te sturen. Hierdoor moet er niet iedere keer een nieuwe verbinding opgezet worden en is de overhead een stuk lager en dus de laadtijd sneller. Alle browsers ondersteunen HTTP/2.

Controleer hier of je website HTTP/2 ondersteunt:
https://www.ipvoid.com/http2-test/

 

Activeren van HTTP/2 op apache
  • Stap 1: activeer de HTTP/2 module op apache
    sudo a2enmod http2
  • Stap 2: Activeer een SSL-certificaat op de vhost
  • Stap 3: voeg HTTP/2 toe als protocol aan de vhost
    nano /etc/apache2/sites-enabled/jouw-domeinnaam-be.conf
    Voeg dit toe direct na de <VirtualHost *:443>-tag:
    Protocols h2 http/1.1
    Bewaar het bestand
  • Stap 4: herstart apache
    Om de nieuwe configuratie te gebruiken, herstart je apache
    sudo service apache2 restart

Intussen is ook de opvolger, HTTP/3, al in moderne browsers in gebruik, maar nog in een experimentele fase.

Tip: HTTP/2 is actief op alle shared hostingpakketten die een SSL-certificaat hebben en wordt standaard geactiveerd op cloud servers.

 

Optimaliseer PHP-instellingen

Meer dan 75% van de websites op het internet gebruikt PHP als technologie. De werking van PHP heeft een belangrijke impact op de performantie van websites. Niet alleen welke code je schrijft, maar ook de instellingen van PHP zelf hebben een grote invloed op de performantie.

Er zijn 3 belangrijke aspecten bij het gebruik van PHP:

  • Upgrade naar de laatste PHP-versie
    Bij iedere nieuwe versie van PHP worden nieuwe technieken ingezet om PHP code sneller uit te voeren. Een upgrade van PHP 5.6 naar PHP 8.0 kan een snelheidswinst tot 45% betekenen, maar ook kleinere stappen van PHP 7.3 naar PHP 7.4 kunnen merkbare verbeteringen brengen.
    Tip: Bij Cloudstar shared hosting pakketten kan je on-the-fly de PHP-versie aanpassen via het controlepaneel.

  • Voorzie voldoende geheugen voor PHP
    Door voldoende geheugen te voorzien voor ieder PHP proces kan de programmeur meer informatie bijhouden bij de scripts en optimalisaties doorvoeren als connectie sharing. Dit is vooral van belang bij complexe pagina’s en scripts.
    Tip: Bij Cloudstar shared hosting pakketten kan je standaard tot 512 MB RAM toekennen per PHP proces. Dat kan je instellen via ons controlepaneel.

  • Voorzie voldoende PHP-processen
    PHP gebruikt worker processen voor het uitvoeren van de PHP-code. Hoe meer worker processen ingezet worden voor een website, hoe meer gelijktijdige acties kunnen uitgevoerd worden op de webserver. Als er te weinig PHP worker processen ter beschikking zijn, dan ontstaan er vertragingen. Zijn er te veel PHP workers dan wordt de processor van de server onnodig belast.
    Het ideale aantal hangt af van website tot website en vereist een stukje tuning.
    Tip: Bij Cloudstar shared hosting pakketten kan je standaard tot 18 PHP-processen activeren. Dat kan je instellen via ons controlepaneel.
  •  

    Caching met Varnish

    Bij e-shops en websites die gebouwd worden met een contentmanagementsysteem als WordPress, Joomla of Drupal worden de webpagina’s opgebouwd met gegevens die opgeslagen zijn in een databank. Iedere keer een bezoeker op de website komt wordt de pagina opnieuw samengesteld. Bij een toenemend aantal bezoekers gaat de performantie achteruit en is er meer processorkracht en geheugen in de webserver nodig.

    Varnish is software die voor de webserver zit. Als een webpagina wordt opgevraagd dan zal Varnish de pagina eerst ophalen op de webserver en daarna bijhouden in het geheugen. Iedere volgende bezoeker zal dan de pagina supersnel aangeleverd krijgen uit het geheugen van Varnish. Er zijn (bijna) geen systeem resources nodig om de pagina te tonen waardoor Varnish een groot aantal gelijktijdige gebruikers aankan.

    Sommige pagina’s mogen niet in cache worden opgeslagen. Denk maar aan het winkelkarretje van een ecommerce website of gepersonaliseerde content. Dat kan je instellen door middel van VCL, een programmeertaal waarmee je het gedrag van Varnish kan beïnvloeden.

    Tip: Bij Cloudstar is Varnish standard inbegrepen bij ieder shared hostingpakket. Varnish is standaard ingesteld voor het gebruik met Wordpress, Joomla en Drupal, maar je kan ook zelf een een gepersonaliseerd VCL-script instellen voor andere toepassingen of maatwerk. Ook bij een cloud server kunnen we Varnish installeren en instellen.

     

    Caching met Redis

    Varnsh biedt een oplossing om volledige webpagina’s tijdelijk op te slaan. Voor pagina’s die gepersonaliseerde content bevatten is dat niet mogelijk. Redis kan daar een oplossing bieden. Het is een databanksysteem dat eenvoudige informatie opslaat in het RAM-geheugen van de server. Het kan gebruikt worden op tussentijdse informatie op te slaan die later op meer plaatsen kan hergebruikt worden. Voorbeeld zijn tellers voor voorraadinformatie voor een webwinkel, cart informatie of content blokken die op verschillende plaatsen terugkomen.

    Net zoals bij Varnish zijn snelheid en schaalbaarheid de belangrijkste voordelen van het gebruik van Redis.

    De meeste contentmanagementsystemen en e-commerce pakketten hebben plug-ins of modules om de voordelen van Redis te kunnen gebruiken. PHP heeft ook modules waarmee je gemakkelijk redis vanuit custom php scripts kan aanspreken.

    Tip: Alle linux shared hostingpakketten bij Cloudstar hebben standaard Redis inclusief.

     

    Doe aan cache warming

    Cache warming is wanneer de cache van een website gevuld wordt, zodat echte bezoekers altijd de gecachte versie van een webpagina te zien krijgen. De voordelen zijn dat bezoekers veel sneller webpagina’s kunnen bekijken en dat de load op de webserver(s) kan gespreid worden als er grote groepen van gebruikers worden verwacht.

    Er zijn gespecialiseerde diensten als cache-warmer.com. Wordpress, Drupal and Magento hebben plugins of extensies die cache warming functies hebben.

     

    Advies nodig?

    Nog meer tips, afgestemd op jouw website? Contacteer ons. Onze experts staan je graag bij met raad en daad.

Schrijf je in voor onze nieuwsbrief

Ontvang je graag nieuwsberichten als dit? Schrijf dan in op onze kwartaalnieuwsbrief.
Krijg je 'm liever niet meer? Afmelden kan net zo eenvoudig als aanmelden.