2008-09-22 3 views
11

Wenn wir neue Websites entwickeln oder Änderungen in neuen testen, die css beinhalten, nachdem der neue Code festgeschrieben wurde und jemand die Änderungen überprüft, sieht er immer eine zwischengespeicherte Version des alten css. Dies verursacht eine Menge Probleme beim Testen, da die Leute nie sicher sind, ob sie die neueste CSS auf dem Bildschirm haben (ich weiß, dass Shift und das Klicken auf Refresh diesen Cache löscht, aber ich kann nicht erwarten, dass die Endbenutzer dies wissen). Was sind meine möglichen Lösungen?IIS CSS-Caching

Antwort

9

Wenn Sie Ihr CSS aus statischen Dateien (oder irgendetwas, für das die Abfragezeichenfolge nicht relevant ist) bereitstellen, versuchen Sie, das zu variieren, um sicherzustellen, dass der Browser eine neue Anforderung stellt, da er denkt, dass es vollständig ausgeführt wird andere Ressource, hat so zum Beispiel: "styles.css token = 1234"

in der CSS-Referenz in Ihrem Markup und den Wert von "Token" ändert auf jedem CSS-Check-in

+0

ich bereits eine statische Methode verwenden CSS-Seiten hinzufügen, so habe ich Ein Timestamp des Builds zum Querystring funktioniert super Danke. – Greg

+0

Obwohl diese Lösung funktioniert, ist sie für große Websites, die möglicherweise Hunderte von Verweisen auf .css- und .js-Dateien enthalten, völlig unpraktisch. – Karlth

+0

@ user357320, Ich verweise Sie auf Zeilen 21 und 22 dieser Seite, die durch einige Definitionen eine "große Website" ist. Zum Glück ist es eine gut strukturierte und gestaltete Website, so dass nicht Hunderte von Referenzen zu kämpfen haben. – Rob

5

Setzen Sie in Ihrer Entwicklungsumgebung den Expires-Header viel niedriger. Stellen Sie es in Ihrer Produktionsumgebung höher ein und setzen Sie es ca. eine Woche vor der Veröffentlichung auf niedrig.

2

es ist nicht ein große Lösung, aber ich habe das schon vorher auf Seitenebene verstanden, indem ich eine Querystring an das Ende des Aufrufs der CSS-Datei angehängt habe:

<link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" /> 

Dann würde ich den ID-Wert randomisieren, so dass es beim Laden der Seite immer einen anderen Wert lädt. Dann würde ich diesen Code rausnehmen, bevor ich in die Produktion gehe. Ich nehme an, Sie könnten den Wert auch aus einer Konfigurationsdatei ziehen, so dass er nur einmal pro Commit geladen werden muss.