Frage

Apologies im Voraus für die langatmige Frage.

Ich bin wirklich ein Datenbank-Programmierer, sondern haben Unterstützung eines klassischen ASP Intranet-Anwendung geerbt, die vor kurzem von IIS 5 auf einen neuen Server läuft migriert wurde IIS 6. Der Benutzer-Basis ist etwa ein Dutzend, die alle mit IE 6.

Die Benutzeroberfläche zeigt Hierarchien von Elementen aus einer Datenbank zurückgegeben, eine Kombination aus HTML ungeordneter Listen und mit Hilfe von Javascript Zweige zu verstecken / erweitern, wie der Benutzer navigiert.

Die Bilder werden neben der Liste mit CSS (mit list-style-Bild) angezeigt, für jede Art von Element ein anderes Bild verwenden. Die Anzahl der verschiedenen Elementtypen (und daher Bilder) in einer Hierarchie, variiert zwischen 2 und 10 Hierarchies variieren zwischen 20 und 200 ergeben.

Das Problem:

Da die Migration auf IIS 6 haben mehrere Benutzer ein Problem aufgetreten ist, die andernfalls durch Bilder verursacht zu sein scheint richtig ein oder mehr Objekte in der Hierarchie angewandt werden; Die folgende Liste zeigt richtig, aber ein oder mehrere Bilder fehlen und Klick auf den Link auf eine leere Seite zu laden verursacht.

Analyse von Netzwerkverkehr mit Wireshark und die IIS-Protokolle zeigen, dass das Problem nicht auf der Serverseite ist - alle Inhalte an den Client korrekt geliefert wurden.

Die Ausgabe erscheint am Client Caching von Inhalten mit Bezug zu werden: es scheint häufigen Benutzer betreffen, die die Anwendung nicht, bevor sie auf ihrem aktuellen PC verwendet haben, oder haben sie für einige Zeit nicht verwendet. Außerdem kann ich das Problem etwa einen Versuch in drei durch eine Sitzung starten, Clearing- meinen Browser-Cache replizieren und dann die Seite aktualisieren. Allerdings ist die gleiche der Anwendung der Fall, wenn auf IIS 5 ausgeführt wird, so dass dieses Problem vor der Migration auf IIS bestanden haben 6, aber haben weniger häufig passiert ist. Gelegentlich, wenn ich die Sitzung für 20 Minuten verlassen oder so scheint der Browser die fehlenden Bilder „zu finden“, und alles funktioniert OK.

Wenn die Anwendung über einen lokalen Proxy zugegriffen (I verwendet Fiddler) das Problem nie auftritt, obwohl das Fiddler Verbindungsprotokoll zeigt man oder mehr Verbindungen zu dem Server gemacht, um die Bilder abzurufen wird abgebrochen. Nach wie vor zeigt den Netzwerkverkehr, dass das Bild vom Server zurückgegeben wurde. Allerdings scheint die Proxy mit IE zu ermöglichen, andere erfolgreich abgerufen Kopien des Bildes aus dem Cache zu finden.

Ich habe den Punkt erreicht, wo ich am Ende meiner begrenzten Kenntnisse bin von ASP / IIS Problemen debuggen. Das Entfernen der list-style-Bilder aus dem CSS behebt das Problem, aber dies hat die Option der letzten Instanz sein, da es die Anwendung schwieriger zu bedienen ist.

Alle Vorschläge, wie ich vorgehen kann dankbar empfangen werden würde.

Bearbeiten

AnonJr legt nahe, dass dies eine Client-Konfigurationsproblem sein müssen, da alle anderen Komponenten ordnungsgemäß zu funktionieren scheinen.

Ich diskon ein einfaches Client-Konfigurationsproblem, weil dies die einzige Anwendung, die von dem Problem betroffen ist beschrieben Ich habe alle Optionen unter Extras> Internetoptionen getestet> Temporäre Dateien> Einstellungen ohne Änderung im Verhalten.

Was andere Client-Konfigurationsoptionen soll ich in Erwägung ziehen?

Edit 2 - eine Lösung

Die akzeptierte Antwort veranlasste mich für ein bekanntes Problem mit IE6 zu suchen anfordernden mehrere Kopien von Bildern, wenn HTML von clientseitige Skript erzeugt wird - http://support.microsoft.com/default.aspx?scid=kb;en-us;319546

Der Artikel (angegeben haben, dass dieses Verhalten „by design“ ist) schlägt eine Behelfslösung von pre-Caching die erforderlichen Bilder, indem sie in einem unsichtbaren DIV Laden:

<DIV style='display:none'><IMG SRC='image.gif'></DIV>

Dies scheint zu funktionieren für mich - ich kann nicht mehr das Problem replizieren, indem meinen Browser-Cache in der Mitte einer Sitzung löschen und eine Fiddler Spur zeigt jedes Bild angefordert wird, our einmal.

habe ich einen Vorbehalt finden, die ich nicht bewusst, vorher war; die IE-Cache ist case-sensitive, so ein im Cache gespeicherte Bild wird nur, wenn der Fall des Dateinamen in der unsichtbaren DIV angegeben verwendet werden, die an anderer Stelle in der Seite verwendet Spiele.

War es hilfreich?

Lösung

Dieses schmatzt eines IE6 Bug, bei dem der Browser mehrere Anfragen für die gleiche Ressource macht. Zum Beispiel, wenn die Inhalte Anrufe für die Anzeige von einem kleinen Symbol der 20mal in einer Liste, anstatt nur einmal das Bild holen, es versucht, es 20-mal zu holen. OK 19 der Antworten sind 304 nicht geändert, aber das ist immer noch 19 zusätzliche Umläufe an den Server.

Ich habe schließlich in der Vergangenheit mit diesem übermäßigen anfordernden gefunden Sie mit zu vielen unerfüllten Anfragen landen. An diesem Punkt weitere Anfragen an den Server auch für andere Seiten kämpfen um eine Antwort zu bekommen, zumindest für eine Weile.

Ich bin nicht sicher, dass das ist, was in Ihrem Fall geschieht, ein Weg, dies zu prüfen ist IE7 zu verwenden, anstatt zu sehen, wenn Sie das gleiche Problem bekommen, wurde dieser Fehler in IE7 behoben.

Bearbeiten : Nun, da das Problem der Fehler bestätigt werden soll ich Ihnen wurde beziehe sollte auch auf eine ‚kurze Zeitverzögerung‘ die KB Referenz beachten. Das zugrunde liegende Problem ist, dass, um den Browser zu tun braucht ein neu geholten Bild neu zu verwenden, bis der aktuelle Stück Javascript defered abgeschlossen hat. Mehr als eine ‚kurze Zeitverzögerung‘ benötigt wird, wird ein asynchroner Ansatz erforderlich.

kein DIV Ansatz, um die Bilder zu vorab zu holen und das funktioniert gut für AJAX-Stil Arbeit:

Ich habe die Anzeige verwendet. Allerdings, wenn Sie haben Code während oder vor dem onload-Ereignisse von einem Fenster ausgeführt werden Sie immer noch das Problem, wenn Bilder in diesem Code hinzufügen. Ein SetTimeout ist erforderlich, um weiteren Code zu erhalten auszuführen, nachdem das Onload-Ereignis abgeschlossen ist.

Andere Tipps

Sie möchten Ihre Aufmerksamkeit auf zwicken die Caching-Einstellungen auf der Client-Seite konzentrieren. Wenn die Bilder vom Server gesendet werden, dann wahrscheinlich es ist nicht ein IIS-Problem sein. Wenn der HTML-Code für die Bilder an den Browser wird, schickt seine nicht ASP-Ausgabe. Das lässt den Client.

Der Proxy kann einige der Probleme werden zu mildern und / oder es könnte ein Faktor in sein wie IE6 entscheiden Bilder cachen, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top