長々とした質問を事前にお詫び申し上げます。
私は実際にはデータベース プログラマーですが、最近 IIS 5 から IIS 6 を実行する新しいサーバーに移行された従来の ASP イントラネット アプリケーションのサポートを継承しています。ユーザー ベースは約 12 人で、全員が IE 6 を使用しています。
UI はデータベースから返されたアイテムの階層を表示し、HTML の順序なしリストと JavaScript の組み合わせを使用して、ユーザーがナビゲートするときにブランチを非表示/展開します。
リスト メンバーの横に CSS (list-style-image を使用) で画像が表示され、項目の種類ごとに異なる画像が使用されます。階層内のさまざまなアイテム タイプ (したがって画像) の数は、2 ~ 10 の間で変化します。階層は、20 ~ 200 アイテムの間で変化します。
問題:
IIS 6 への移行以降、何人かのユーザーが、階層内の 1 つまたは複数のアイテムにイメージが適切に適用されないことが原因と思われる問題を経験しています。リストは正しく表示されますが、1 つ以上の画像が欠落しており、リンクをクリックすると空のページが読み込まれます。
Wireshark を使用したネットワーク トラフィックの分析と IIS ログは、問題がサーバー側にあるのではなく、すべてのコンテンツがクライアントに正しく提供されていることを示しています。
この問題は、クライアントでのコンテンツ キャッシュに関連しているようです。現在の PC でアプリケーションを使用したことがないか、しばらく使用していないユーザーに影響を与えることが多いようです。また、セッションを開始し、ブラウザのキャッシュをクリアしてからページを更新することで、約 3 回に 1 回の試行で問題を再現できます。ただし、IIS 5 で実行している場合も同じことがアプリケーションに当てはまるため、この問題は IIS 6 への移行前に存在していた可能性がありますが、発生頻度は低くなりました。ときどき、20 分ほどセッションを離れると、ブラウザが不足している画像を「見つけた」ように見え、すべて正常に動作します。
アプリケーションがローカル プロキシ (私は Fiddler を使用) を介してアクセスされる場合、問題は発生しませんが、Fiddler 接続ログには、画像を取得するためにサーバーに対して行われた 1 つ以上の接続が中止されたことが示されます。前と同様に、ネットワーク トラフィックは、画像がサーバーから返されたことを示しています。ただし、プロキシを使用すると、IE はキャッシュから正常に取得された他の画像のコピーを見つけることができるようです。
ASP/IIS の問題のデバッグに関する限られた知識の限界に到達しました。CSS から list-style-images を削除すると問題は解決しますが、アプリケーションが使いにくくなるため、これは最後の手段にする必要があります。
私がどのように進めることができるかについての提案は、ありがたく受け取られます。
編集
AnonJr は、他のすべてのコンポーネントが正しく機能しているように見えるため、これはクライアントの構成の問題であるに違いないと示唆しています。
これは説明されている問題の影響を受ける唯一のアプリケーションであるため、単純なクライアント構成の問題を軽視しました。[ツール] > [インターネット オプション] > [一時ファイル] > [設定] ですべてのオプションをテストしましたが、動作に変化はありませんでした。
他にどのようなクライアント構成オプションを検討する必要がありますか?
編集 2 - 解決策
受け入れられた回答により、HTML がクライアント側スクリプトから生成されたときに IE6 が画像の複数のコピーを要求するという既知の問題を検索するようになりました - http://support.microsoft.com/default.aspx?scid=kb;en-us; 319546 .
記事 (この動作は「仕様によるもの」であると述べています) は、必要な画像を目に見えない DIV に読み込むことで、事前にキャッシュする回避策を提案しています。
<DIV style='display:none'><IMG SRC='image.gif'></DIV>
これはうまくいくようです。セッションの途中でブラウザーのキャッシュをクリアしても問題を再現できなくなりました。Fiddler のトレースでは、各画像が 1 回だけ要求されていることが示されます。
以前は気づいていなかった注意点が 1 つあります。IE キャッシュでは大文字と小文字が区別されるため、キャッシュされた画像は、非表示の DIV で指定されたファイル名の大文字と小文字がページの他の場所で使用されているものと一致する場合にのみ使用されます。