Google Web Search

ChromeおよびSPDYの開発者であるMike Belshe氏がpublic-webapps@w3.orgメーリングリストにおいて、XMLHttpRequestにプライオリティを設定できる機能を追加してはどうかと提案している。提案内容自体はシンプルなもの。Google内部ではすでに同様の取り組みを実施しており、それ相応の効果が確認できたとしている。標準化することでGoogleの提供するサービスがより高速に利用できるようになることを狙っているとみられる。

提案されているプライオリティ機能は次のとおり。XmlHttpRequestのインスタンスにプライオリティを設定できるようにし、この設定にしたがってリソースのダウンロードを実施するようにするというのがアイディアの骨子。

XMLHttpRequestプライオリティAPI 内容
定数 const unsigned short CRITICAL = 0 最初に読み込まれるリソース。このリソースが読み込まれるまではほかのリソースの読み込みは行われない。
定数 const unsigned short HIGH = 1 CRITICALがなければ読み込みが開始される。LOWとLOWESTよりも先に読み込みが開始されるが、ほかの読み込みを阻止することはない。
定数 const unsigned short LOW = 2 デフォルト。CRITICALがなければ読み込みが開始される。LOWESTよりも先に読み込みが開始されるが、ほかの読み込みを阻止することはない。
定数 const unsigned short LOWEST = 3 CRITICALがなければ読み込みが開始される。ほかの読み込みを阻止することはない。
メソッド void setPriority(unsigned short priority) プライオリティを設定する。XMLHttpRequest.send()が実行される前に設定しないと意味がない。
var client = new XMLHttpRequest();
client.setPriority(HIGH);
client.open(’GET’, ‘demo.cgi’);
client.send();

現在のXmlHttpRequestにはブラウザに対してどのリソースを優先的にダウンロードするかといった指示を渡す簡単な方法が用意されていない。Googleではすでに優先順位にしたがってリソースのダウンロードを実施する機能を実装しており、Google Mapsではすでにその効果が確認されているという。こうしたプライオリティテクニックはすでにChromeでも使われており、SPDYプロトコルの一部にも取り込まれているという。

提案されている内容は機能的にはシンプルなものであり、後方互換がある。ブラウザはこの機能をサポートせずに従来どおりに動作することが可能。すでに大幅なレイテンシの削減が確認されているなど実効性能が見込めることから、標準化に盛り込まれる可能性がある。