IE6で時々ページが真っ白になるバグの対処法
おそらく既知のバグだと思うけど記録。
こちらにあるようなIE6の文字コード認識のトラブルとは別件で、主に動的にPageを生成している場合に起こる話。
下記4つの条件、
- IE6でAタグのリンクをクリックしてページを開く
- HTTP ResponseがGZIP圧縮転送される
- HTTP Response Headerに "Cache-Control: no-cache"
または "Cache-Control: no-store" の片方、或いは両方が含まれている - Response内容が3.5KB前後よりも小さい
これらが全て揃った場合に、1〜20回に1回の割合で「ページ真っ白現象」が再現する(なんでランダムに発生するんだかが判らん…)。ただしクライアントの環境によっては再現しない場合もあるかも。私の環境WindowsXP SP2+IE6 SP2及びスタンドアロン版IE6では再現します。
言語を問わず対策が必要なバグだと思いますが、特にPHPでSESSIONを使ってる方は要注意。session_start() は自動的に "Cache-Control: no-cache, no-store" を含むヘッダをいくつか吐き出します。きちんと対策をしておかないと、IE6ユーザーから見たあなたのWebサイトは時々真っ白け…かもしれません。
バグの特徴
- 真っ白になったらソースの表示ができない
- 真っ白になってもリロードすれば直る
- リロードし続けても再現しない
- URLを直接入力した場合も再現しない
- IE6以外のブラウザでは再現しない(IE6を利用するSleipnirなどでは再現する)
再現実験
IE6でこちらへどうぞ。運が良い方は、いきなり真っ白かもしれませんが、その場合はリロードしてください。