Windows Internet Explorer 9

ネットワーク通信の性能はWebブラウザの操作感を左右する決定要因のひとつになっている。このため、ブラウザの操作感を向上させるには、いかにネットワークトラフィックを削減するかが大きな鍵を握ることになる。この課題に対するブラウザの対策は主に次の2つになる。

  • 可能な限りGZIP圧縮通信を実施する。
  • ブラウザキャッシュを活用し、可能な限り通信量を減らす。

Caching Improvements in Internet Explorer 9 - IEBlogにおいてIE9 PP3で実現されているキャッシュ機能の改善内容が紹介されている。IE9では性能を向上させるためにキャッシュ周りの実装に大幅に手が入っており、IE9以前と比べて大きな改善が実現されているという。紹介されている改善内容は次のとおり。

1. キャッシュ期限の拡大

RFC2616ではリソース期限を1年間に制限するように推奨しているものの、いくつかのサーバはCache-Control: max-ageにかなり大きな期限を指定している。IE9よりも前のIEではCache-Control: max-ageの最大値は2の31乗秒(約68年)まで指定できたが、IE9ではこれを2の63乗秒まで可能なように拡大。ただし内部では2の31乗秒まで丸め込んでいる。

2. HTTP/1.1 Varyレスポンスの改善

HTTP/1.1 Varyヘッダを使うことで、特定条件下ではサーバに確認を求めなくともキャッシュしたリソースが使えるようになる。IE9ではこの条件がAccept-EncodingとHostに対しても有効になるように拡大されており、以前よりも多くのシーンでキャッシュが利用できるようになる。たとえばAccept-Languageの指定がen-USからja-JPに変更された場合、以前のIEではen-USのときにキャッシュしたリソースはそのままでは使われなくなるが、IE9からではこうしたケースでも以前のキャッシュが利用されるようになる。

3. リダイレクトキャッシュの導入

IE9ではRFC2616に説明があるHTTPリダイレクトレスポンスを新しくサポート。この効果はとても大きいという。ただし、誤った設定のもとで動作しているWebアプリケーションはこの機能が導入されたあとは正しく動作しなくなる可能性がある。

4. HTTPSキャッシュの改善

これまで非クロスホストHTTPSリクエストは無条件でリソースを要求するように動作していたが、IE9では可能であればキャッシュを利用するように変更されている。HTTPS通信においても以前よりもキャッシュが活用されやすくなる。

5. 戻る/進むボタンの改善

これまでは戻るボタンを押した場合にはそれぞれのリソースが更新されていないかチェックを実施していたが、この対象を削減し通信の発生を最小限へ抑えている。RFC2616には履歴機能とキャッシュは別の機構であることが説明されており、戻る/進むボタンで表示する内容は最新のコンテンツではなく、ユーザが閲覧したときのコンテンツであることを示唆しており、こうした動作をすることには問題がないという。

6. ヒューリスティックキャッシュ機能の改善

ページ読み込み時間を削減する基本的な方法は、リソースの期限をそれぞれ設定しておき、Webブラウザが機能を発揮しやすくすることにある。ただし多くのサーバで期限指定なしの状態でコンテンツを配信しており、ブラウザが推測して処理を実施する必要があるという現状になっている。そうした場合、IE9よりも前のバージョンのIEではとても簡単な計算で対処していたが、IE9ではこの部分を改善しており以前よりもキャッシュ効果が見込まれる。