Hoe maak ik optimaal gebruik van de Static Content Cache?

  Webhosting (Legacy)
PCextreme maakt gebruik van een geavanceerde cache voor statische content om de snelheid van websites te verhogen.

Op de Static, Dynamic en Premium webhosting clusters wordt er gebruik gemaakt van grote opslag systemen voor het opslaan van alle webhosting data. Deze zogeheette NAS (Network Attached Storage) systemen zijn via een intern netwerk verbonden met de diverse webservers in de clusters.

Het laden van bestanden vanaf een NAS kost meer tijd dan vanaf een lokale hardeschijf, alles moet immers over het netwerk heen. Om de data beschikbaar te hebben op meerdere servers tegelijk is het niet mogelijk alle data op een lokale hardeschijf te plaatsen.

Om die reden draait er op elke webserver een lokale caching server die statische bestanden, zoals CSS, JavaScript en afbeeldingen lokaal op de webserver opslaat voor een bepaalde tijd. Wanneer een bezoeker dan uw website bezoekt, hoeft alleen de website zelf vanaf de NAS te worden geladen, waar de afbeeldingen direct uit de lokale cache van de webserver komen.

Bestanden serveren uit deze cache is 6 tot 8 keer sneller dan het serveren vanaf de NAS.

U hoeft voor deze caching niets te doen, dit gebeurd automatisch door middel van een intelligent systeem, echter kunt u het systeem wel beïnvloeden, hier onder wordt uitgelegd hoe u dat doet.

Welke bestanden worden er gecached en hoe komen deze er in?

Standaard wordt alleen statische content gecached. Dit zijn files met de volgende extensies:
  • jpg
  • jpeg
  • gif
  • png
  • js
  • css
  • xml
  • bmp
  • htm
  • html
  • tif
  • tiff
  • swf
  • ico

Wanneer een bezoeker om een dergelijk bestand vraagt krijgt de cache eerst of deze daar al in aanwezig is, zo ja, dan zal deze het bestand aan de bezoeker serveren vanuit de cache.

Is het bestand nog niet aanwezig in de cache, dan wordt deze opgehaald, in de cache geplaatst en daarna aan de bezoeker geserveerd.

Hoe lang blijven bestanden in de cache?

Bestanden worden maximaal 15 minuten in de cache opgeslagen.

Kan ik forceren dat de cache vernieuwd wordt?

Ja, dat kunt u zeker. Door in uw browser met CTRL+F5 de pagina te vernieuwen (CMD-SHIFT-R voor Apple gebruikers) geeft u aan de cache door dat u een vers bestand wilt, hierdoor zal het meest recente bestand worden opgehaald en worden geserveerd. Ook kunt u in het controle paneel van uw hosting pakket in het menu “Varnish Cache” de cache legen.

Ik wil bepaalde bestanden niet in de cache, kan ik dat instellen?

Ja, onze cache kijkt naar de zogeheette Cache-Control header die u kunt uitsturen voor middel van een .htaccess bestand. Als u wil dat uw gehele website niet in de cache wordt opgenomen, plaats dan in een .htaccess bestand:
Header Set Cache-Control "max-age=0, no-store"
Let Op! U wordt aangeraden zo veel mogelijk gebruik van de cache te maken aangezien dit de snelheid van uw website ten goede komt.

Ik heb een .png bestand wat eigenlijk een PHP script is, en nu?

Het kan zijn dat u een PHP script heeft wat zich voor doet als een afbeelding (Om bijvoorbeeld willekeurige afbeeldingen te tonen), deze wilt u dan ook niet in de cache. Plaats bovenin uw script:
Header("Cache-Control: max-age=0, no-store");
De cache zal deze header nu uitlezen en dit bestand niet in de cache plaatsen.

Hoe kan ik bepaalde bestanden uitsluiten?

Als u bijvoorbeeld alle .html en .css bestanden wilt uitsluiten van de cache, plaatst u in een .htaccess bestand:
<FilesMatch "\.(css|html)$"> Header Set Cache-Control "max-age=0, no-store" </FilesMatch>

Kan ik beïnvloeden hoe lang iets in de cache blijft?

Ja, dit kunt u doen door middel van de “Expires” en “Cache-Control” headers, plaats bijvoorbeeld in een .htaccess:
ExpiresByType image/jpeg "access plus 24 hours"
Als u dit plaatst in een .htaccess bestand in een map waarin zich veel JPEG bestanden bevinden, dan zullen deze na het opvragen maximaal 24 uur in de cache blijven. Dit kunt u doen met elke gewenste extensie.

Kan ik extra bestanden in de cache plaatsen?

Ja, dat kan zeker. Zodra er een “Expires” en “Cache-Control” header is gezet zal deze worden bekeken en op basis daarvan zal het document in de cache worden opgenomen.

Mijn document wordt niet in de cache opgenomen, hoe kan dat?

Controleer als eerste of de “Expires” en “Cache-Control” headers wel kloppen, zodra dat bekeken is, ga dan na of er wellicht cookies gebruikt worden op de betreffende pagina. Cookies zorgen er voor dat een pagina er voor elke gebruiker anders uit kan zien, denk hierbij aan iemand die ingelogd is en daardoor staat er op elke pagina zijn gebruikersnaam. De aanwezigheid van een “Cookie” zorgt er dan ook voor dat documenten NIET in de cache worden opgenomen. De uitzondering hierbij zijn de Google Analytics cookies, hiervoor hebben wij speciale aanpassingen gemaakt. Houd hier rekening mee bij het testen met uw browser! Het gebruik van PHP Sessions zorgt er ook al voor dat uw website Cookies gebruikt, zoals aangegeven zorgen deze er voor dat caching niet mogelijk is. U kunt controleren of uw website gebruik maakt van Cookies door uw website in te vullen op http://www.web-sniffer.net/ en te kijken of de server reageert met een “Set-Cookie” antwoord. Is dat het geval? Dan stuurt uw website Cookies uit en is caching dus niet mogelijk.

Afleiden of iets uit de cache komt

Uit de response headers is te zien of een bestand uit de cache geserveerd is.
  • Server: PCX/Cache: Dit bestand is uit de cache geserveerd
  • *Server: PCX/No-Cache”: Achterliggende *Cache-Control* headers geven aan dat het de cache niet in mocht, maar anders wel was gebeurd*

Cache vernieuwen forceren

Dit kan door de Cache-Control: no-cache header te sturen bij een request/verzoek. Een browser doet dit wanneer de gebruiker op CTRL+F5 drukt. De cache zal nu het bestand invalideren en opnieuw ophalen en weer in de cache plaatsen. Wat effectief dus de cache vernieuwd.

Welke caching server gebruiken jullie?

Wij maken gebruik van Varnish als caching proxy server.