Pragmatische Cache-Invalidierung

Server-Side Rendering gehören mittlerweile zum Standardrepertoire von Webseiten und -anwendungen. Auch Browser wie Google Chrome neigen dazu, möglichst viel zu Cachen, um die Ladezeiten von weiteren Aufrufen zu minimieren. Die Cache-Invalidierung von CSS-/JS-/Bild-Dateien kann mit Hilfe von mod_pagespeed, Expires/Cache control header, einem Cache Manifest oder aber sehr pragmatisch und direkt durch individuelle Parameter hinter dem Dateinamen gelöst werden.


Dabei gibt es verschiedene Strategien, wann eine Datei neu geladen werden soll oder nicht.

Die einfachste Variante ist das Neuladen bei jedem Request. Dazu hängt man einfach eine zufällige Zeichenkette an die einzubettende Datei an und erzwingt dadurch das Neuladen (hier am Beispiel einer Bilddatei):

2e634273f316c54b39828f057f7c7d9c

Ist das zu viel des Guten und will stattdessen nur Neuladen, wenn sich die Datei verändert hat, nutzt man das Datum der letzten Dateiänderung (hier am Beispiel einer JS-Datei):

2e634273f316c54b39828f057f7c7d9c

Nutzt man eine Versionsverwaltung wie Git, kann man sich auch an dem eindeutigen Hash des letzten Commits (die verkürzte Version reicht) bedienen (hier am Beispiel einer CSS-Datei):

2e634273f316c54b39828f057f7c7d9c

WordPress hängt standardmäßig die aktuelle WordPress-Version an alle per enqueue_style und enqueue_script eingebundenen Dateien an. Dieses Verhalten kann man entweder direkt in den Funktionsaufrufen als Argument verändern, oder aber man hookt sich global ein und wendet eines der oberen Verfahren an:

2e634273f316c54b39828f057f7c7d9c

Zurück