Cachebeheer in HTML5

1 view
Skip to first unread message

Sjoerd

unread,
Oct 20, 2020, 1:06:18 PM10/20/20
to
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?

robert

unread,
Oct 21, 2020, 2:56:39 AM10/21/20
to
Sjoerd <x...@xx.invalid>:
> 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

unread,
Oct 21, 2020, 7:29:58 AM10/21/20
to
robert:
> Sjoerd:
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.

J

unread,
Oct 21, 2020, 8:27:28 AM10/21/20
to
On Tue, 20 Oct 2020 19:05:47 +0200, Sjoerd <x...@xx.invalid> wrote:

><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?

robert

unread,
Oct 21, 2020, 8:55:06 AM10/21/20
to
J <noe...@noemail.com>:
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

unread,
Oct 21, 2020, 9:29:41 AM10/21/20
to
J:
> 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

Sjoerd

unread,
Oct 23, 2020, 6:35:32 AM10/23/20
to
Op woensdag 21 oktober om 08.56 uur schreef robert:
> 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

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.
Reply all
Reply to author
Forward
0 new messages