Cache-Problem bei IIS 6
Ein interessantes Problem hat “ASP.NET Codebook“-Co-Autor Stefan Falz beim Einsatz von IIS 6 mit bestimmten Ordnernamen und bestimmten Dateitypen gefunden:
Verwendet man innerhalb einer Applikation einen Ordner mit einer Tilde (“~”) am Anfang, dann werden verschiedene Dateitypen (.css, .js, .htm) vom Server offensichtlich gecachet. Soweit, so unproblematisch.
Dumm nur, dass der IIS Änderungen an diesen Dateien nicht mehr erkennt! Sogar ein Umbenennen bleibt erfolglos! Und das, obwohl sämtliche Caching-Einstellungen im Browser und auf dem Server so gesetzt werden, dass kein Caching erfolgen soll.
Um dieses Verhalten nachzustellen, können Sie folgendes ASP-Script verwenden:
Hallo Welt
Richten Sie unterhalb des Verzeichnisses, in dem sich das ASP-Script befindet, einen Ordner “~test” ein und hinterlegen Sie dort folgendes Stylesheet:
BODY
{
font-family : verdana;
font-size : 30px;
font-weight : normal;
}
Rufen Sie nun die Datei index.asp per Browser vom Server (der ein IIS 6 sein sollte!) ab.
Öffnen Sie nun die css-Datei erneut mit einem Editor Ihrer Wahl, und ändern Sie die Schriftgrösse so ab, dass in der Datei beispielsweise eine andere Schriftart steht:
BODY
{
font-family : verdana;
font-size : 20px;
font-weight : normal;
}
Rufen Sie die Datei index.asp erneut im Browser auf. Sehen Sie den Unterschied? Können Sie auch nicht, denn der Server cachet die geänderte Datei weiterhin.
Ändern Sie nun den Namen des Ordners von “~test” nach “test”. Vergessen Sie nicht, den Pfad in der Datei index.asp anzupassen. Wiederholen Sie nun die obigen Schritte – Sie werden feststellen, dass IIS die Datei nicht cachet bzw. die Änderung an der Datei erkennt.
Dieses Verhalten tritt bei einem IIS 6 mit allen aktuellen Patches auf. Wie es mit älteren Versionen aussieht, bleibt noch zu testen.
Mittlerweile hat Stefan das Problem in der ASP-FAQ noch etwas ausführlicher beschrieben:
Ein ähnliches Problem betreffend das sogenannte Kernel Mode Caching finden Sie hier beschrieben: