Für die Überschrift meines heutigen Artikels hatte ich mir eigentlich den Titel "to cache or not to cache" ausgedacht und dann festgestellt, dass schon zig andere Autoren auf diese glorreiche Idee gekommen sind. Daher Spaß bei Seite und ab ans eigentliche Thema :-)
Bestimmt bist Du in dem Google PageSpeed Insights Tool auch schon öfter auf den Punkt "Statische Inhalte mit einer effizienten Cache-Richtlinie bereitstellen" gestoßen. In diesem Abschnitt möchte Google Dich darauf aufmerksam machen, dass es Dateien gibt, die der Browser ggf. besser cachen könnte, dieses jedoch von den aktuellen Servereinstellungen verhindert wird.
Mit ein paar Einstellungen in der Konfiguration Deines Apache- oder NGNIX- Servers lassen sich dabei schon tolle Ergebnisse erzielen. Einstellungen, die Deine Website gefühlt deutlich beschleunigen werden und die dafür sorgen, dass Dich Google ein klein wenig mehr lieb hat.
Doch kannst Du mit dem Caching von solchen Dateien auch schnell an die Grenzen des Machbaren stoßen, denn das Caching für Javascripte, CSS-Dateien & Co. lassen sich nur dann mit diesen Einstellungen beeinflussen, solange die Dateien auch auf Deinem Server liegen. Dateien, die von externen Domains geladen werden, kannst Du damit nicht beeinflussen. Daher solltest Du das Laden von externen Ressourcen gut im Auge behalten und dies auf das nötige Minimum beschränken. Oft habe ich z.B. schon das ein oder andere Hotjar-Javascript entdeckt, obwohl Hotjar schon lange nicht mehr genutzt wurde. Daher lohnt es sich, auch hier in regelmäßigen Abständen eine Art Inventur der Ressourcen zu machen.
Wie Du das Browser-Caching im Detail einrichten kannst zeigt Dir Google in diesem Artikel.
Für die meisten Websites und Shops werden diese globalen Einstellungen schon ausreichen. Wer jedoch komplexere Anforderungen an ein Caching im Browser hat, für den hat Simon Hearne einen sehr guten Artikel unter dem Namen "Caching Header Best Practices" geschrieben, in dem er auch anhand eines Ablaufdiagramms erklärt, wann und wie eine Datei im Browser gecached werden sollte.