Kategorien:
Suchbegriffe:
Suchfelder:
Suche starten
Neue Beiträge / Top 7
Alle Artikel / Liste
Bücher zu ASP/ASP.Net
Startseite / Hilfe
Fragen zu ASP/ASP.NET
Datenschutzrichtlinen
Impressum / Kontakt
Das ASP.Net Codebook. Die unentbehrliche Referenz für alle ASP.Net-Entwickler [Autoren: Stefan Falz, Karsten Samaschke]
Active Server Pages-FAQ
Active Server Pages - FAQ (v. 1.50) © 2000 - 2017 by Stefan Falz Webconsulting

GetFile! Dynamischer Dateiupload im Browser

ASP Allgemein Zurück Druckversion Stefan Falz 07.02.2005
Frage: (Cacheproblem) Änderungen in Dateien werden vom IIS 6 nicht erkannt

Problembeschreibung
IIS 6 liefert unter Umständen bestimmte Dateien mit einem alten, nicht mehr existenten Dateiinhalt
aus. Bisher konnte ich dieses Phänomen bei den Dateitypen CSS, JS, HTML und ASP feststellen. Es
ist aber davon auszugehen, dass noch mehr, bzw. alle Dateitypen davon betroffen sind.

Bemerkt und getestet wurde dieses Problem unter Windows Server 2003 / IIS6 (alle derzeit
verfügbaren Updates und Patches installiert). Das Problem äußert sich durch die Auslieferung alter
Dateistände, obwohl die betreffenden Dateien längst aktualisiert wurden.

Ein clientseitiges Problem ist hierbei auszuschließen, da das Problem zum einen mit jeglicher Einstellung
des clientseitigen Cachings (IE 6 SP 1, alle Updates sowie Firefox 1.0) als auch mit einer eigenen Test-
anwendung, die überhaupt nicht weiß was Caching überhaupt ist, auftritt.


Die Ursache
Der aktuelle Stand der Tests ist, dass die Tilde "~" das Problem verursacht. Wenn man dieses Zeichen
im Ordnernamen (bspw. ~css) verwendet, werden Änderungen an den  Dateien dieses Ordners nicht
erkannt.


Mögliche Lösungen
Eine Behelfslösung ist die Art der Dateispeicherung. Anstatt die Datei im verwendeten Editor über Strg+S
oder Datei -> Speichern zu sichern, verwenden Sie Datei -> Speichern unter. Dies hat in allen getesteten
Fällen für Abhilfe gesorgt.

Da dies aber keine dauerhafte Lösung sein kann, kann ich bis zur Behebung dieses Bugs (der ent-
sprechende Report wurde bereits an Microsoft geschickt) nur die Umbenennung der Ordner ohne die
Verwendung der Tilde "~" im Ordnernamen empfehlen.


Beispieldateien für einen Selbsttest
Wenn Sie selbst testen möchten, legen Sie sich folgende Verzeichnisstruktur innerhalb Ihrer Website an:

/test/
/test/css/
/test/~css/

Im Verzeichnis "/test/" erstellen Sie eine Datei mit dem Namen "index.html" oder auch "index.asp".
Diese sollte folgenden Code beinhalten:


<html>
<head>
    <title>Cachetest</title>
    <link rel="stylesheet" href="~css/test.css" type="text/css">
</head>
<body>
    Hallo Welt
</body>
</html>


In den Ordnern "/css/" und "/~css/" erstellen Sie jeweils eine Datei mit dem Namen "test.css" mit
folgendem Inhalt:


BODY
{
    font-family     : verdana;
    font-size       : 10px;
    font-weight     : normal;
}


Rufen Sie jetzt im Browser die Datei "index.html" auf (natürlich nicht im Dateisystem, sondern über
den lokalen Webserver). Achten Sie insbesondere auf die Schriftgröße. mit der der Text "Hallo Welt"
angezeigt wird.

Ändern Sie jetzt in der Datei "/~css/test.css" den Wert der Eigenschaft "font-size" von "10px" auf
"100px" und speichern Sie die Änderungen über Strg+S im Editor (Notepad, UltraEdit, Wordpad, ...).
Jetzt aktualisieren Sie die Datei im Browser über F5, bzw. Strg+F5. Die Schriftgröße sollte jetzt 100
Pixel betragen.

Gehen Sie wieder zurück zum Editor und ändern Sie den Wert der Eigenschaft "font-size" von "100px"
auf "50px". Speichern Sie erneut und aktualisieren Sie die Datei im Browser. Jetzt sollte die Schriftgröße
immer noch 100 Pixel betragen, obwohl diese mit "50px" angegeben wurde. Um ganz sicherzugehen,
dass Ihr Browser die CSS Datei nicht doch zwischengespeichert hat, können Sie die Datei im Browser
auch mehrfach aktualisieren, den Cache des Browser leeren, ...

Ändern Sie nun in der Datei "index.html" den Pfad zur CSS-Datei von "~css/test.css" in "css/test.css".
Führen Sie danach die oben beschriebenen Schritte mit der Datei "css/test.css" durch. Wie Sie sehen
wird jede Änderung sofort übernommen und es gibt keine Cacheprobleme.


Weitere Ressourcen, die das Problem beschreiben
Weblogeintrag von Karsten Samaschke


Hinweis bei Cacheproblemen in allen Ordnern
Falls Sie auf das Phänomen stossen, dass jegliche Datei, egal in welchem Ordner diese vorliegt vom IIS
in einer nicht mehr aktuellen Version ausgeliefert wird, hilft Ihnen evtl. der folgende Registryeintrag:

Gehen Sie über Start -> Ausführen -> regedit in den Registry Editor. Öffnen Sie folgenden Pfad:


HKEY_LOCAL_MACHINE
-> System
    -> CurrentControlSet
       -> Services
          -> HTTP
             -> Parameters


Erstellen Sie hier einen neuen DWORD-Wert mit dem Namen "UriEnableCache" und vergeben den Wert 0.
Eine detailliertere Erklärung dieses Registryeintrags finden Sie hier

Sehr gut
1 2 3 4 5 6
Ungenügend
Zurück | Bisherige Aufrufe: 54935 | Bisherige Bewertungen: 8 | Durchschnitt: 4,00
Stefan Falz Webconsulting