2011-12-06

Google Libraries API はバージョンを指定して使う

jQuery など便利なライブラリを自分でサーバーを用意しなくても Google の CDN から利用可能なサービス Google Libraries API について、バージョンを厳密に指定せず自動的に最新版が降ってくるようにする指定方法には注意が必要です。

お勧めする方法
https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

この時、Cache-Control の max-age は 1年間 になる。

お勧めしない方法1
https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js
https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js など

この時、Cache-Control の max-age は 1時間 になる。

max-age が短縮される理由は、1.7.x で自動的に最新バージョンが選択される仕組みにより、URL に対応する内容が変化しうるからです。

もしこの URL のキャッシュをブラウザはすでに持っていたとしても、取得から 1時間後以降はサーバーへのキャッシュバリデーションリクエストの返答を確認する必要があるので、即座にキャッシュを使う動作にならず、スクリプトが利用可能となるタイミングが少し遅れてしまいます。

@norahiko によると、自動的に最新バージョンを配信する仕組みがたまに上手く動いていないようなので。

お勧めしない方法2
http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js

http:// で取得されるファイルは安全であることが保障されない (通信経路で改ざんされる恐れがある) ので使わない方が良いです。もし仮に攻撃者のスクリプトが注入されれば Web サイト内の秘密は全て無くなります。

リンク
Google Libraries API