Het Configureren van de Cache-Control Headers in NGINX

0
183

Caching is het proces van het opslaan van gedownloade gegevens voor later gebruik, waar het lezen van de schijf eerder dan het aanvragen van het weer. Het maken van het juiste gebruik van uw browser en CDN caching kan de snelheid van uw website aanzienlijk.

Hoe Werkt Caching Werk?

Elke browser heeft een ingebouwde cache, welke winkels statische objecten gedownload van websites. De volgende keer dat ze verbinding maken, als het object dat u ze aanvraagt, is nog steeds in de cache, zal het laden van de geheugen-liever dan te vragen voor het weer, waardoor prestaties aanzienlijk verbeteren en vermindering van de belasting op uw web server in het proces.

De browser van de gebruiker is een client-side cache. Echter, veel grote sites zullen ook gebruik maken van een Content Delivery Network, of CDN. De CDN zit in de voorkant van uw web server, en slaat uw pagina ‘ s op de server, meestal op meerdere edge-servers verspreid over de hele wereld. Dit verbetert de toegang van latentie, prestaties en vermindert de stress op uw web server. Als u zou willen leren van meer over Cdn ‘ s, kunt u lezen in onze handleiding hier op ze.

De Cache-Control header die u kunt configureren van uw web server wilt toevoegen aan alle uitgaande verzoeken. Met het, kunt u opgeven welke middelen krijgen in de cache, en voor hoe lang. Er zijn een paar dingen om al rekening mee voordat je gaat toevoegen van het hele site.

Bepaalde pagina ‘ s mogen nooit in de cache worden opgeslagen. Iets dat vraagt om een gebruiker aan te melden bij niet moeten worden opgeslagen door een CDN, of anders is er een risico op het weergeven van een gebruiker persoonlijke gegevens niet aan anderen. U kunt nog steeds cache deze soorten pagina ‘ s in de browser kant alleen (door het instellen van Cache-Control om privé). Als algemene regel geldt, als de pagina zal in de toekomst worden de exacte hetzelfde voor alle gebruikers, zoals uw home pagina, kunt u de cache. Statische bronnen, zoals CSS en afbeeldingen, kunnen meestal worden opgeslagen, vaak veel langer.

U zult ook willen ervoor zorgen dat u instelt redelijke Time-To-Live (TTL) – waarden voor elke bron. TTL bepaalt hoe lang het object zal blijven in de cache voordat ze ongeldig gemaakt waarin de gebruiker het aanvragen van een nieuw object. De trade-off hier is tussen een lange caching tijd en snelle updates. Je wilt niet om de cache van uw home pagina voor een heel jaar, want je zou iets wijzigen op dinsdag. Het instellen van een maximum leeftijd van ongeveer een paar minuten voor uw home pagina is lang genoeg om aan de onmiddellijke herlaadt, en snel genoeg voor snelle verspreiding van updates. Echter, voor statische bronnen, zoals foto ‘ s, ze kunnen nooit veranderen, en je moet het fijne instelling van de hoge TTL-waarden, zelfs zo hoog als twee jaar.

U kunt altijd gebruik maken van versiebeheer bestandsnamen om te leiden tot een cache herladen. Als u een nieuwe versie van een CSS style sheet, kunt u de naam van het stijlen-1.0.1.css, en de browser van de gebruiker (en eventuele Cdn ‘ s in de voorkant van het) zien het als een nieuw bestand dat moet worden redownloaded. Daarnaast zijn er voor sommige Cdn ‘ s, kunt u het probleem handmatig invalidations voor het doorspoelen van de bestaande cache zonder het wijzigen van bestandsnamen.

Hoe te Gebruiken Cache-Control in NGINX

De Cache-Control heeft een paar opties:

  • openbaar – worden opgeslagen door iedereen, met inbegrip van browsers en Cdn ‘ s. Gebruik dit voor de meeste statische objecten.
  • privé – Bevat gevoelige gegevens die niet kunnen worden opgeslagen door Cdn ‘s of reverse proxy’ s. De browser van de gebruiker kan de cache van het lokaal. Gebruik dit voor de meeste geverifieerde pagina ‘ s.
  • no-cache – Ondanks de naam, is het geen caching uitschakelen. De browser kan nog steeds cache van de reactie voor de prestaties, maar moet controleren met de oorspronkelijke server voor updates voordat u deze gebruikt. Gebruik deze optie als u wilt dat de gebruiker elke keer geldigmaking
  • no-store – Zet caching volledig. Gebruik dit alleen voor zeer gevoelige gegevens die niet mogen worden verzonden tweemaal.

Bij het instellen van de max-age, het is altijd gedaan in enkele seconden. Echter, NGINX en zorgt voor een paar aangepaste waarden:

  • -1, of uit, die zet caching, en niet voor het wijzigen van bestaande headers
  • tijd is ingesteld op Unix-tijd nul, die expliciet zet caching en trouwens alle caches (handig als je met NGINX als een reverse proxy)
  • max, die zal vervallen wanneer de universe eindigt op 31 December, 2037
  • 30 seconden
  • 1m, voor minuten
  • 24 uur per dag, voor een uur
  • 3d dagen
  • 1M, voor maanden
  • 2y, voor de jaren

Bovendien kunt u de geen-transformeren richtlijn, die schakelt alle conversies die kunnen worden gedaan om de bron. Bijvoorbeeld, sommige Cdn ‘ s comprimeren van afbeeldingen de bandbreedte beperken. Deze richtlijn schakelt dat gedrag.

Voor NGINX, kunt u de Cache-Control headers met de volgende richtlijnen:

verloopt 1j;
add_header Cache-Control “openbare, niet-transform”;

De eerste regel geeft de max-leeftijd met 1 jaar, en ten tweede stelt de openbare en niet-transformeren caching-instellingen. U kunt deze toevoegen aan een server te blokkeren toe te passen voor de hele site, maar een betere methode is om de afstemming bestand extensies met een locatie-blok om verschillende waarden, afhankelijk van de extensie van het bestand:

locatie ~* .(?:css|js)$ {
verloopt 1j;
add_header Cache-Control “openbaar”;
}

Deze locatie blok maakt gebruik van een reguliere expressie, aangeduid door de ~. Dit is handig voor het toepassen van algemene instellingen voor het type content. Als u wilt maken van uitzonderingen voor specifieke locaties, kunt u gebruik maken van een normale locatie-blok, die voorrang hebben boven een reguliere wedstrijd.

locatie /profiel {
verloopt 2d;
add_header Cache-Control “openbare, niet-transform”;
}

U kunt ook gebruik maken van het = – modifier, die overeenkomt met paden precies, en hebben voorrang op een regex match en een standaard blok.

Gebruik Surrogaat-Besturingselement Wijzigen CDN Gedrag

Terwijl u kunt uitschakelen CDN caching en nog leverage browser caching door het gebruik van de Cache-Control: private, het is beter om directe controle over. De meeste Cdn ‘s zullen daarbij de Surrogaat-Control header, welke functies precies dezelfde als de Cache-Control, behalve alleen bedoeld voor Cdn’ s. Op deze manier kunt u Snel vertellen om één ding te doen, en de gebruiker om een ander te doen.

In NGINX, zult u hebben om deze header handmatig instellen van de max-age-waarde in plaats van het gebruik van NGINX is verlopen richtlijn.

add_header Surrogaat-Control “public, max-age=86400”;
add_header Cache-Control “public, max-age=120”;

U zult zeker wilt testen met uw CDN om te verifiëren dat dit werkt—Surrogaat-Control is vrij nieuw, en is niet universeel.