Je website versnellen deel 2

ICTscripters maakt gebruik van cookies. Door het gebruiken en browsen naar onze site gaat je automatisch akkoord met het gebruik van cookies. Klik hier voor meer informatie

  • Hallo,

    het heeft lang geduurd om deel 2 te plaatsen maar hier is hij. Met dit deel zorg je voor de cache van je bestanden.

    Je hebt een .htaccess nodig met als volgt;

    Source Code: .htaccess

    1. <FilesMatch "\\.(js|css|html|htm|php|xml)$">
    2. SetOutputFilter DEFLATE
    3. </FilesMatch>
    4. <IfModule pagespeed_module>
    5. ModPageSpeed on
    6. ModPagespeedRewriteLevel CoreFilters
    7. ModPagespeedRewriteLevel PassThrough
    8. </IfModule>
    9. # Turn on Expires and set default to 0
    10. ExpiresActive On
    11. ExpiresDefault A0
    12. # Set up caching on media files for 1 year (forever?)
    13. <filesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
    14. ExpiresDefault A29030400
    15. Header append Cache-Control "public"
    16. </filesMatch>
    17. # Set up caching on media files for 1 week
    18. <filesMatch "\.(gif|jpg|jpeg|png|swf)$">
    19. ExpiresDefault A604800
    20. Header append Cache-Control "proxy-revalidate"
    21. </filesMatch>
    22. # Set up 2 Hour caching on commonly updated files, nu ook minstens 1 week
    23. <filesMatch "\.(xml|txt|html|js|css)$">
    24. ExpiresDefault A604800
    25. Header append Cache-Control "proxy-revalidate"
    26. </filesMatch>
    27. # Force no caching for dynamic files
    28. <filesMatch "\.(php|cgi|pl|htm)$">
    29. ExpiresActive Off
    30. Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    31. Header set Pragma "no-cache"
    32. </filesMatch>
    Laat alles zien

    Vervolgens zet je de volgende 2 lijnen ergens in je config / index.

    PHP Source Code

    1. <?php
    2. header('Expires: '.gmdate('D, d M Y H:i:s GMT', time() + 1209600));
    3. header('Content-type: text/html; charset=utf-8');
    4. ?>
    1209600 = 26 weken / een half jaar.

    1,144x gelezen

Reacties 4

  • FangorN -

    Ik weet niet of het handig is dat je op voorhand op grond van een extensie kunt aangeven hoe lang iets geldig zou moeten zijn. Tenzij je hier in het ontwerp van de werking van bestandstypen rekening mee houdt.

    Er zijn vele uitzonderingen denkbaar:
    - "dynamische" bestanden die niet (meer) van inhoud veranderen (denk aan nieuwsberichten of -archieven)
    - "statische" bestanden die van inhoud veranderen (denk aan alfbeeldingen gegenereerd door PHP)

    Je zou ook kunnen denken aan andere vormen van caching. Stel je hebt bijvoorbeeld een heel lang bericht (artikel) met veel UBB-code. Voordat je deze afdrukt in HTML-vorm moeten er een aantal omzettingen plaatsvinden die de (rauwe) UBB-tekst omzet naar HTML. Elke keer als je zo'n artikel opvraagt wordt dezelfde HTML-tekst gegenereerd. Wat je ook zou kunnen doen is de "verwerkte" UBB-tekst opslaan en deze direct serveren als/invoegen in een omvattend HTML-document. Aan dit laatstgenoemde document kun je ook een "leeftijd" hangen, of een E-tag, of andere voorzieningen waarmee afgeleid kan worden of het document inhoudelijk is veranderd ten opzichte van het vorige bezoek.

    Simpelweg een "expires" leeftijd ophangen aan een bestandstype kan winst opleveren, maar het is niet echt een flexibele oplossing.

    EDIT: daarnaast hoeft het content-type wat je serveert niet per se / altijd text/html te zijn (denk aan gegenereerde afbeeldingen, json etc.)

    • Puurhost -

      Heel goed punt! Hoewel je dit natuurlijk zelf zou kunnen scripten zijn er veel gratis systemen dit dit soort geavanceerde caching voor je regelen. In het geval van Wordpress bijvoorbeeld W3 Total Cache, voor andere site's is Cloudflare een mooie optie om makkelijk en gratis de caching te regelen.

      Overigens als je toegang hebt tot je server, is het installeren van bijvoorbeeld Varnish Cache een mooie oplossing voor het versnellen van je website. Als je hier niet zelf toegang tot hebt kan je meestal je hoster vragen om een vorm van caching te installeren.

    • Ferhat.Remory -

      Oké, een punt heb je. Maar niet iedereen kan Cloudflare runnen, of heeft een Wordpress site (ik gebruik ook de W3 Cache-plugin, met gzip compressie plugin). Dus daarom dat ik dit ook gaf als oplossing.

    • Puurhost -

      Cloud flare gaat op DNS niveau; dat zou eigenlijk voor iedereen wel een optie moeten zijn :)