Ich versuche, Caching zu verwenden, um die Reaktionszeit einer Website zu beschleunigen. In den meisten Dokumentationen, die ich gelesen habe, wird empfohlen, das Ablaufdatum wie folgt auf +1 Monat ab dem Zugriffszeitpunkt festzulegen:
ExpiresActive On
ExpiresByType text/css "access plus 1 month"
Ich mache mir Sorgen, dass der Client die aktualisierte Datei nicht erhält, wenn ich eine CSS-Datei aktualisiere.
Kann sichergestellt werden, dass der Client eine neue Version einer Datei herunterlädt, wenn diese geändert wurde?
Jede Hilfe ist willkommen
Antwort1
Ihre Besorgnis ist berechtigt – Clients, deren Browser die Datei abgerufen haben, erhalten die aktualisierte Version normalerweise erst einen Monat nach dem Zugriff darauf, es sei denn, sie haben zufällig ihren Browser-Cache geleert oder laden die Seite neu.
Eine Möglichkeit, dies zu umgehen, besteht darin, die CSS-Datei zu aktualisieren und das HTML, das darauf verweist, so zu ändern, dass am Ende des href-Attributs des Link-Tags (also nach der CSS-Datei) ?v=2 oder ?v=3 usw. steht. Browser betrachten dies als eindeutige URL und laden daher die neue Kopie herunter, die jedoch auf dieselbe physische CSS-Datei auf Ihrem Server verweist.
<link rel="stylesheet" type="text/css" href="/styles.css" />
wird
<link rel="stylesheet" type="text/css" href="/styles.css?v=2" />