GoogleのCDNを使うか単にcatするか

有名ライブラリ、例えばjQueryを利用する時GoogleのCDNを使うことが多いけど、どうせ依存するなら単にcatしてまとめても良い(はず)。つまりHTTPリクエストがひとつ増えるデメリットと転送量の低下を期待するメリットのどちらがそのWebサイトにとって効果的かを考えなくてはならない。

Webサイトの規模が大きくハードウェア性能に余裕があるなら、転送量が増えることはデメリットには成り得ないのでcatする方がメリットが大きそう。そしてWebサイトにアクセスできればそのライブラリに依存したスクリプトが動くことをかなりの確率で保証できる。対して規模が小さいなら転送量の増加はコストの増加につながりやすく厳しい。HTTPリクエストの増加はユーザーに負担を求めることになるが、Google CDNのようなキャッシュが大いに期待できるものならなんとかメリットが上回りそう。

というのが僕のイメージなんだけど、あくまでもこれは有名ライブラリと自分で書いたスクリプトという構成においての話で、その他ゴミみたいなライブラリやスクリプト(FacebookのLikeボタンとか)のことまでも考慮に入れると、HTTPリクエストばらまいた方がメンテナンス性の面で大きく優る気がする。特にFacebookのLikeボタンはURLにハッシュをつけてキャッシングとバージョン管理を両立させている感じで、そのままURLの中身をcatさせてもちゃんと動く保証がなさそうだったりとかそういうのもあり、非常に面倒くさい。これに限らず自分でcatするためにダウンロードした3rdパーティー製のライブラリやスクリプトの将来に渡る保証のことや、それ以前にUAにより中身が変わっているかどうかとか、頻繁でかつ破壊的な変更へどう対応するかとか……。

今のところこのWebサイトはGoogle CDNと自分の書いたスクリプトをcatした(Closure Compilerで)もの、その他3rdパーティー製のスクリプトのハイブリッドな構成にしているけど別にちゃんと説明できる理由があるわけではない。