CSS IE9 CSS Cache

[ChAoZ]

Rear Admiral
Registriert
Jan. 2010
Beiträge
5.320
Hallo zusammen,

CSS Anpassungen für den IE9 (7-9) sind immer etwas schwierig da der IE9 CSS extrem lange cached. Gibt es da Möglichkeiten diesen schnell zu löschen?

Beispiel:
- CSS Angepasst
- F5 (Strg) bring nix
- Strg +Shift + Entf -> Löschen bringt nix

Ich muss echt lange warten bzw. den Browser neustarten damit meine Änderungen übernommen werden.

Ich bitte um Hilfe
 
Häng hinter die CSS beim Entwickeln einfach die modified time der Datei, also wie bei PHP-Dateien der Query String.
Code:
<link ... href="pfad/zur/datei/style.css?128937">
Somit zwingst du den Browser die Datei neu zu laden, weil dieser nur fixe Pfade cached bzw. cachen sollte. Alternativ funktioniert eigentlich bei jedem Browser ein Shift + Reload Button.
 
Nicht so einfach da wir CSS Files per Minifier verknüpfen um die Anzahl Requests zu minimieren.

Sieht dann halt so aus:
"https://www.example.com/de/de/shop/ext/?
b=shop/styles&cl=de/de&f=reset.css,layouts/standard/standard.css,elements/general/general.css,
elements/general/country/general_de.css,elements/container/container.css,elements/container/country/
container_de.css,elements/buttons/buttons.css,elements/buttons/country/buttons_de.css,elements/
navigator/navigator.css,elements/messages/messages.css,elements/messages/country/messages_de.css,
elements/divider/divider.css,elements/formfields/formfields.css,elements/uniform/uniform.css,
elements/breadcrumbs/breadcrumbs.css,elements/breadcrumbs/country/breadcrumbs_de.css,
elements/voucher/voucher.css,elements/voucher/country/voucher_de.css,
elements/basket/basket.css,elements/basket/country/basket_de.css,
actions/addressinvoice/addressinvoice.css,actions/addressinvoice/country/addressinvoice_de.css"
 
Soll das die richtige URL sein oder was ist das? Die einzig elegante Variante, den Cache zu umgehen, ist die eben Erwähnte. Siehst du hier auch bei CB im Quelltext.
Code:
<link rel="stylesheet" type="text/css" href="clientscript/vbulletin_important.css?v=387" />
<link rel="stylesheet" type="text/css" href="/stylesheets/cb-forum.css?20120210" />
<!--[if lte IE 8]><link rel="stylesheet" type="text/css" href="/stylesheets/cb_msie8.css?20120210" /><![endif]-->
<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="/stylesheets/cb_msie7.css?20120210" /><![endif]-->
<!--[if IE 6]><link rel="stylesheet" type="text/css" href="/stylesheets/cb_msie6.css?20120210" /><![endif]-->
Das Gleiche funktioniert auch für andere Dateien, eben weil dem Browser vorgetäuscht wird, dass es sich um eine andere Version handelt. Trotz anderem Query aber, bleibt die Datei ja die gleiche, ist statisch und wird somit immer normal ausgeliefert.
Code:
<script type="text/javascript" src="clientscript/yui/yahoo-dom-event/yahoo-dom-event.js?v=387"></script>
<script type="text/javascript" src="clientscript/yui/connection/connection-min.js?v=387"></script>
<script type="text/javascript" src="clientscript/vbulletin_global.js?v=387"></script>
<script type="text/javascript" src="clientscript/vbulletin_menu.js?v=387-cb5"></script>
 
So sieht der Request aus, der gleich X Dateien einbindet.
Das Ganze passiert aber nicht über den Import-Tag wie "<style> sondern wird via PHP erledigt.

Daher kann ich keinen Timestamp anhängen.
Dachte eigentlich ehr an eine Browser-Lösung, nicht an der vorhandenen Logik.
 
Naja, die einzige Browser-Lösung wäre wie gesagt Shift + Reload, Ctrl + F5 oder Cache löschen (im FF funktioniert glaub ich noch ein verzögerter Zweifachklick auf den Reload-Button, aber das hilft dir im IE ja nix).
Alternativ (serverseitig) über die Modified Time bei externen Dateien als Query String oder aber über eine .htaccess regeln.
 
[ChAoZ] schrieb:
Nicht so einfach da wir CSS Files per Minifier verknüpfen um die Anzahl Requests zu minimieren.

dann musst du eben aus allen in dieser URL angegeben Files den Zeitstempel der neuesten Änderung raussuchen.
Am Browser kannst du da nichts ändern, außer das Caching durch HTTP-Header komplett zu deaktivieren. Wenn sich ein Browser dazu entschließt zu aggressiv zu cachen, hat man auch heute nur die von Yuuri angesprochene Möglichkeit dafür zu sorgen, dass die Dateinamen von 2 Versionen unterschiedlich sind.


Ihr werdet die zusammengefügten CSS-Dateien doch in irgendeiner Form cachen, dann nutzt doch einen Hash aus dem Resultat oder den Zeitstempel der letzten Cache-Aktualisierung.
 
Zuletzt bearbeitet:
Danke euch.
Werde das in einer Runde hier ansprechen.
 
Zurück
Oben