Gemäß den vielbeachteten Best Practices von Yahoo zur Beschleunigung Ihrer Website stellen wir statischen Inhalt von einem CDN mithilfe von Cache-Ablauf-Headern für die Zukunft bereit. Natürlich müssen wir diese "statischen" Dateien gelegentlich aktualisieren, daher fügen wir derzeit eine Infix-Version als Teil des Dateinamens hinzu (basierend auf der SHA1-Summe des Dateiinhalts). Somit:
styles.min.css
Wird:
styles.min.abcd1234.css
Das Verwalten der versionierten Dateien kann jedoch mühsam werden, und ich habe mich gefragt, ob eine GET-Argumentnotation sauberer und besser sein könnte:
styles.min.css?v=abcd1234
Welches verwenden Sie und warum? Gibt es Überlegungen zu Browsern oder Proxys / Caches, die ich berücksichtigen sollte?
static-content
cache-control
David Eyk
quelle
quelle
Antworten:
Laut Google Make the Web Faster werden Seiten mit Abfrageparametern nicht von vielen HTTP-Proxys zwischengespeichert.
So
styles.min.abcd1234.css
ist die bevorzugte Lösung. Sie können einen geeigneten Mechanismus zum Umschreiben von URLs verwenden, umstyles.min.abcd1234.css
die Implementierungstyles.min.css?v=abcd1234
transparenter zu gestalten.Wenn Sie nur HTTPS unterstützen, gilt dieser Hinweis nicht, da Proxys normalerweise keine Seiten zwischenspeichern können, die über SSL bereitgestellt werden.
quelle
Bei Verwendung der Versionierung im GET-Stil würden aus einem leeren Cache mehrere URLs - z. B.
style.css?v=123
undstyle.css?v=456
- denselben Inhalt zurückgeben. Ich kann jedoch nicht sehen, dass dies problematisch wäre, zumal Sie immer nur einen Link auf einmal erstellen würden.Ich denke, Sie werden feststellen, dass der GET-Stil viel einfacher zu pflegen ist. Sie benötigen keine separaten Dateien: Ändern Sie einfach die URL, und der Browser ruft das CSS erneut ab.
UPDATE: Nach weiteren Recherchen scheint es, dass die Verwendung einer Abfragezeichenfolge dazu führen kann, dass Browser die Dateien nicht mehr zwischenspeichern. Wenn Sie jedoch korrekte Header zurückgeben,
Expires
ist dies kein Problem.UPDATE 2: In der akzeptierten Antwort wird darauf hingewiesen, dass einige Proxys keine Dateien mit einer Abfragezeichenfolge zwischenspeichern. Dies basiert jedoch auf alten Informationen; Das in Squid erwähnte Problem wurde vor 7 Jahren behoben. Impressive Webs hat diesbezüglich eine gute Stellungnahme abgegeben .
quelle
Beides funktioniert gleichermaßen, da eine Abfragezeichenfolge als Teil der URL betrachtet wird. Wenn Sie sie ändern, wird der Name der Ressource geändert, sodass der Browser eine neue Kopie der Datei abruft.
Ich sage, wende die Methode an, die für dich einfacher zu pflegen ist.
quelle
dies ist keine antwort auf die obige frage , ich möchte eine bessere lösung, also frage ich hier selbst
Beide Methoden erfordern Änderungen an den Dateien, auf die sich die CSS- und JS-Dateien beziehen. In der Tat würde es einen Neustart des Anwendungsservers erfordern, nachdem die Änderungen vorgenommen wurden.
Gibt es eine bessere Möglichkeit, die Versionsverwaltung für statische Dateien durchzuführen, ohne den Anwendungsserver neu starten zu müssen?
Folgendes ist in der Lösung ausgeschlossen
Die Lösung sollte sich auch nicht auf die Einstellung der Cachesteuerung auswirken oder verfallen.
Vielen Dank
quelle