私はこの問題を抱えており、解決策を見つけることができないようです...
初期ロード時にネイティブIE7(IE9 / IE8からエミュレートされたものではない)で正常にレンダリングされるページがありますが、ブラウザーのキャッシュから提供される後続の要求でIE6標準モードにフォールバックします。IE7は「div.class1.class2」のような複数のCSSクラスを処理する方法を知っていますが、IE6標準モードはそうではありません。
これを再現する方法は次のとおりです。
- IE7を開きます(実際のIE9 / IE8のIE7エミュレートモードは機能しません!)
- hhttp://beta.upcload.com/widget/popup?garmentId = workaholicfashion-5276777&sid=にアクセスします
- 最初の訪問では、すべてが見栄えがよく、ダンディに見えるはずです(たとえば、ChromeやFFのような青いボタン)
- 今すぐページをリロードすると、ブラウザがIE6標準モードにフォールバックするため、いくつかのCSSルールが破られます(クァークズモードではなく、1つを確認しました!document.compatModeはまだ「CSS1Compat」です)
- キャッシュをクリアしてリロードすると、すべてが再びきれいに見えます
- 何度でも繰り返す
したがって、すべてのファイルがAmazonサーバーから提供される場合、IE7は、複数のクラスを含むCSSルールを含め、ファイルを適切にレンダリングするようです。(たとえば、「div.class1.class2」)まったく同じページをまったく同じコードでリロードしようとすると、チェーンされたCSSクラスを理解せず、いくつかを壊すIE6標準モード(Quirksモードではない)に何らかの形で切り替わります。デザイン、例えばボタン。いくつかの異なるDoctype/Metaヘッダーを追加しようとしましたが、すべて違いはありません。現在、ページはXHTML Strictで有効であり、X-UA-Compatible IE = edgeヘッダーがありますが、キャッシュからロードすると正しくレンダリングされません。私が理解できたヘッダーの唯一の違いは、変更されていないリクエストのContent-Typeヘッダーが欠落していることでしたが、それは問題ではないはずですよね?
それに加えて、ローカル開発サーバーでIE7を使用してこのまったく同じページを開くと、リロードした後でも問題なくレンダリングされます。:/
アップデート
さて、ようやく開発サーバーで再現することができました。唯一の違いは「max-age」ヘッダーで、ブラウザはローカルに何もキャッシュしませんでした。キャッシュ時間を増やすと、IE7もそれらのファイルのキャッシュを開始しました。これにより、ファイルがキャッシュから読み込まれると、デザインが中断されました。したがって、サーバーからではなくキャッシュから提供されるファイルに問題があるはずです。
アップデート2
CSSファイルに絞り込みました。IE7は、キャッシュから取得した場合(つまり、Content-Typeヘッダーなし)にIE6モードでレンダリングし、サーバーからロードした場合はIE7モードでレンダリングするようです。(Content-Type:text / css)なぜそうなるのか誰かが知っていますか?たぶんいくつかの不正なCSSルール?回避策として、キャッシュを防ぐためにスタイルシートにランダムなパラメーターを追加します。これにより、IE7がIE6モードに切り替わることはありませんが、スタイルシートからすべてのエラーと警告を削除しても、問題は解決しません。