Zoeken…


Opmerkingen

Antwoorden worden afzonderlijk in de cache opgeslagen voor elke URL en elke HTTP-methode.

HTTP-caching is gedefinieerd in RFC 7234 .

Woordenlijst

  • vers - status van een in de cache opgeslagen reactie, die nog niet is verlopen. Doorgaans kan een nieuw antwoord aan verzoeken voldoen zonder dat het nodig is om contact op te nemen met de server waaruit het antwoord afkomstig is.
  • oud - staat van een in de cache opgeslagen reactie, die voorbij de vervaldatum is. Meestal kunnen oude antwoorden niet worden gebruikt om aan een verzoek te voldoen zonder bij de server te controleren of het nog steeds geldig is.
  • tevreden - antwoord in de cache voldoet aan een verzoek wanneer alle voorwaarden in het verzoek overeenkomen met het antwoord in de cache, bijv. ze hebben dezelfde HTTP-methode en URL, het antwoord is vers of het verzoek staat oude antwoorden toe, verzoekkoppen komen overeen met headers vermeld in de Vary kop van het antwoord, enz. .
  • revalidatie - controleren of een in de cache opgeslagen reactie nieuw is. Dit wordt meestal gedaan met een voorwaardelijk verzoek met If-Modified-Since of If-None-Match en responsstatus 304 .
  • privécache - cache voor een enkele gebruiker, bijvoorbeeld in een webbrowser. In privécaches kunnen gepersonaliseerde antwoorden worden opgeslagen.
  • openbare cache - cache gedeeld tussen veel gebruikers, bijvoorbeeld in een proxyserver. Een dergelijke cache kan hetzelfde antwoord naar meerdere gebruikers verzenden.

Cachereactie voor iedereen gedurende 1 jaar

Cache-Control: public, max-age=31536000

public betekent dat het antwoord voor alle gebruikers hetzelfde is (het bevat geen gepersonaliseerde informatie). max-age is in seconden vanaf nu. 31536000 = 60 * 60 * 24 * 365.

Dit wordt aanbevolen voor statische activa die nooit zijn bedoeld om te veranderen.

Cache gepersonaliseerde reactie gedurende 1 minuut

Cache-Control: private, max-age=60

private geeft aan dat het antwoord alleen in de cache kan worden opgeslagen voor gebruikers die de bron hebben aangevraagd en niet kan worden hergebruikt wanneer andere gebruikers dezelfde bron aanvragen. Dit is geschikt voor reacties die afhankelijk zijn van cookies.

Stop het gebruik van bronnen in de cache zonder eerst contact op te nemen met de server

Cache-Control: no-cache

De client zal zich gedragen alsof het antwoord niet in de cache is opgeslagen. Dit is geschikt voor bronnen die op elk moment onvoorspelbaar kunnen veranderen en die gebruikers altijd in de nieuwste versie moeten zien.

Antwoorden no-cache zijn langzamer (hoge latentie) omdat ze telkens wanneer ze worden gebruikt contact moeten maken met de server.

Om bandbreedte te besparen, kunnen de clients dergelijke reacties echter nog steeds opslaan. Antwoorden no-cache worden niet gebruikt om aan verzoeken te voldoen zonder elke keer contact op te nemen met de server om te controleren of het in de cache opgeslagen antwoord kan worden hergebruikt.

Verzoek om reacties die helemaal niet moeten worden opgeslagen

 Cache-control: no-store

Instrueert klanten om het antwoord op geen enkele manier te cachen en het zo snel mogelijk te vergeten.

Deze richtlijn is oorspronkelijk ontworpen voor gevoelige gegevens (tegenwoordig moet HTTPS in plaats daarvan worden gebruikt), maar kan worden gebruikt om vervuilende caches te voorkomen met reacties die niet opnieuw kunnen worden gebruikt.

Het is alleen geschikt in specifieke gevallen waarin de responsgegevens altijd anders zijn, bijvoorbeeld een API-eindpunt dat een groot willekeurig getal retourneert. Anders kunnen no-cache en revalidatie worden gebruikt om een "niet-cacheerbaar" antwoord te vertonen, terwijl toch nog wat bandbreedte kan worden bespaard.

Verouderde, overbodige en niet-standaard headers

  • Expires - geeft de datum aan waarop de bron oud wordt. Het is afhankelijk van servers en clients die nauwkeurige klokken hebben en tijdzones correct ondersteunen. Cache-control: max-age heeft voorrang op Expires en is over het algemeen betrouwbaarder.

  • post-check en pre-check richtlijnen zijn niet-standaard Internet Explorer-extensies die het gebruik van oude antwoorden mogelijk maken. Het standaardalternatief is stale-while-revalidate .

  • Pragma: no-cache - verouderd in 1999 . Cache-control moet in plaats daarvan worden gebruikt.

In cache opgeslagen bronnen wijzigen

De eenvoudigste methode om cache te omzeilen is de URL te wijzigen. Dit wordt als best practice gebruikt wanneer de URL een versie of een controlesom van de bron bevat, bijvoorbeeld

http://example.com/image.png?version=1
http://example.com/image.png?version=2

Deze twee URL's worden afzonderlijk in de cache opgeslagen, dus zelfs als …?version=1 voor altijd in de cache is opgeslagen, kan een nieuwe kopie onmiddellijk worden opgehaald als …?version=2 .

Gebruik geen willekeurige URL's om caches te omzeilen. Gebruik in plaats daarvan Cache-control: no-cache of Cache-control: no-store . Als antwoorden met willekeurige URL's worden verzonden zonder de no-store instructie, worden ze onnodig opgeslagen in caches en worden meer bruikbare antwoorden uit de cache verwijderd, waardoor de prestaties van de hele cache afnemen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow