2009年9月27日日曜日

GAEでif-modified-sinceを有効にさせる

GAEで作った海老澤家のアルバム修正すべき点がたくさんあるけど忙しくて手がつけられない。とりあえず、写真配信の負荷を下げるためにif-modified-sinceを実装することにした。

if-modified-sinceとはHTTPの条件付きリクエストの一つで、これを利用することで無駄なコンテンツ配信を軽減させることができる。

  • Webサーバは、コンテンツの最終更新日(last-modified)をつけて配信する。
  • ブラウザは、データを取得したら、それをキャッシュ(保存)しておく。
  • ブラウザがキャッシュされたコンテンツを要求する場合、そのコンテンツの最終更新日(if-modifled-since)をつけてWebサーバにリクエストする。
  • Webサーバは、ブラウザから送られたコンテンツの最終更新日と、サーバにあるコンテンツの最終更新日を比較し、ブラウザの最終更新日が古くなければHTTPコード304(not-modified)だけを返す。ブラウザは304を受け取ったら、キャッシュを再利用してコンテンツを表示する。
  • もし、ブラウザの最終更新日がWebサーバの最終更新日より古かったら、Webサーバはコンテンツを配信する。ブラウザは、古いキャッシュを破棄して新しいコンテンツを表示し、新しいコンテンツをキャッシュする。

特に海老澤家のアルバムだと、サムネイル画像を毎回生成しているので、これらがキャッシュされればCPU負荷を下げることにもつながる。まあ、ブラウザが変われば効果がないので、本質的な解決ではないけど。

GAEにおけるif-modified-sinceの実装方法をWikiに記載した。興味のある人はどうぞ。

0 件のコメント:

コメントを投稿