Discussion:
Cachebeheer in HTML5
(te oud om op te antwoorden)
Sjoerd
2020-10-20 17:05:47 UTC
Permalink
Zo, nu weer eens een intelligente vraag. :-)
Zo nu en dan verandert er weer eens iets in de site.
Om te voorkomen dat de browser alles uit de cache haalt en de veranderingen
dus niet doorkomen, staan deze regels in het <head>-gedeelte:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

Maar de W3C Validator zegt dat dit allemaal fout is! Dit hoort namelijk bij
HTML4 en is in HTML5 niet meer toegestaan.

Nu bestaat voor een pagina met evenementen die voortdurend ge-update wordt,
een oplossing die iemand ooit eens in deze nieuwsgroep naar voren bracht, nl.
AJAX. De html-code van de evenementen staat in een apart tekstbestand en wordt
door een stukje AJAX-code in de site geplaatst. Dit lijkt heel goed te werken!

Maar nu het gewone cachebeheer. Waarbij er geen haast is. Ik zou me b.v. zoiets
kunnen voorstellen:

<meta http-equiv="Expires" content="259200">

259200 seconden is 3 dagen. Zo wordt er toch nog in veel gevallen van de cache
gebruik gemaakt, wat ook zijn voordelen heeft.

Even dacht ik een alternatief gevonden te hebben: de application cache.
https://developer.mozilla.org/en-US/docs/Web/HTML/Using_the_application_cache
Maar wat blijkt: deze is ook al weer 'deprecated' en wordt 'highly discouraged'.

Maar hoe ziet dan het normale cachebeheer in HTML5 eruit?? Iets met PHP, las ik
ergens. Moet je het in die richting zoeken?
unknown
2020-10-21 06:56:38 UTC
Permalink
Post by Sjoerd
Maar hoe ziet dan het normale cachebeheer in HTML5 eruit??
Cachebeheer doe je via HTTP headers (in feite heeft het ook niks met HTML
te maken; "vroeger" kon je met die <meta> tags nog wel een beetje sturen
maar eigenlijk was dat een poor man's HTTP header override).

Een beginpunt voor meer informatie is hier te vinden:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
--
robert
Sjoerd
2020-10-21 11:28:14 UTC
Permalink
Post by unknown
Post by Sjoerd
Maar hoe ziet dan het normale cachebeheer in HTML5 eruit??
Cachebeheer doe je via HTTP headers (in feite heeft het ook niks met HTML
te maken; "vroeger" kon je met die <meta> tags nog wel een beetje sturen
maar eigenlijk was dat een poor man's HTTP header override).
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Mijn dank. Voor mij nog onbekend terrein. Interessant allemaal.
Heb zo te zien nog heel wat uit te zoeken.
Heb alvast een browser-extensie gevonden die de request- en response-headers
laat zien.
Sjoerd
2020-10-23 10:28:24 UTC
Permalink
Post by unknown
Cachebeheer doe je via HTTP headers (in feite heeft het ook niks met HTML
te maken; "vroeger" kon je met die <meta> tags nog wel een beetje sturen
maar eigenlijk was dat een poor man's HTTP header override).
https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Misschien aardig om nog even te melden dat het gelukt is. (Hoera!)
De houdbaarheid van de verschillende soorten bestanden staat in .htaccess.
Voor html-bestanden is die b.v. 3 dagen.
Aan de http response headers van de beginpagina (index.html) blijken nu deze
regels te zijn toegevoegd:

cache-control: max-age=259200
expires: Sun, 25 Oct 2020 22:21:29 GMT

Het genoemde tijdstip is 3 dagen nadat de pagina geopend is.
Een dag later is dat tijdstip nog precies hetzelfde. Zo is te zien dat de
browser de pagina uit de cache heeft gehaald.

J
2020-10-21 12:27:26 UTC
Permalink
Post by Sjoerd
<meta http-equiv="Expires" content="0">
Maar de W3C Validator zegt dat dit allemaal fout is! Dit hoort namelijk bij
HTML4 en is in HTML5 niet meer toegestaan.
Begrijp ik niet. Dit wordt toch gewoon in dat Duitse boek behandeld?
unknown
2020-10-21 12:55:05 UTC
Permalink
Post by J
Post by Sjoerd
<meta http-equiv="Expires" content="0">
Maar de W3C Validator zegt dat dit allemaal fout is! Dit hoort namelijk bij
HTML4 en is in HTML5 niet meer toegestaan.
Begrijp ik niet. Dit wordt toch gewoon in dat Duitse boek behandeld?
Volgens mij zijn de enige geldige `http-equiv`'s nog:
• content-type (maar eigenlijk heb je daar `<meta charset="...">` voor)
• default-style
• refresh
--
robert
Sjoerd
2020-10-21 13:28:57 UTC
Permalink
Post by J
Post by Sjoerd
<meta http-equiv="Expires" content="0">
Maar de W3C Validator zegt dat dit allemaal fout is! Dit hoort namelijk bij
HTML4 en is in HTML5 niet meer toegestaan.
Begrijp ik niet. Dit wordt toch gewoon in dat Duitse boek behandeld?
Pff, ik kan alleen dit vinden:

-----
HTML Meta Tag

Prior to HTML5, using meta tags inside HTML to specify cache-control was
a valid approach:

<meta http-equiv="Cache-control" content="no-cache">

Using a meta tag like this is now discouraged and is not valid HTML5.
Why? It's not a good idea because only browsers will be able to parse the
meta tag and understand it. Intermediate caches won't.

So always send caching instructions via HTTP headers.

https://medium.com/@codebyamir/a-web-developers-guide-to-browser-caching-cc41f3b73e7c
-----

Een intermediate cache is voorzover ik begrijp een CDN.
https://nl.wikipedia.org/wiki/Content_delivery_network
Loading...