前回からの続きです。

httpd.confに

CODE:
  1. FileETag None

を付与するとレスポンス内容は以下の通り、Etagが返却されなくなる。

CODE:
  1. HTTP/1.x 200 OK
  2. Date: Tue, 08 May 2007 06:39:22 GMT
  3. Server: Apache/2.2.4 (Unix)
  4. Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
  5. Accept-Ranges: bytes
  6. Content-Length: 44
  7. Connection: close
  8. Content-Type: text/html

Etagが返却されないので、次回以降のリクエストには「If-None-Match:」も
当然付与されなくなる。

FileETagの記載方法は以下のようなパターンが考えられます。

  • /usr/local/apache2/htdocs/images配下のコンテンツにはETagを付けない
  • 画像ファイルの拡張子を持つコンテンツにはETagを付けない
  • すべてのコンテンツにETagを付けない

結局どのように設定すべきなのかということですが

動的ページについてはそもそもファイルではないのでいずれにせよEtagは返却されません。
なので関係ありません。

静的コンテンツについては負荷分散サーバーの振り分け論理によって替わってきます。

1)ラウンドロビン等、毎回異なるWWWサーバーへアクセスする可能性がある場合

FileETag None

FileETag MTime Size
とすべきです。

2)ソースIPアドレス等で一貫性のある振り分け論理の場合

基本的に同一ユーザは同一WWWサーバーに振り分けられるので、初期設定のままでかまわないはずです。

あと、もう少しだけmod_cacheを深追いしてみる という記事に、Firefox 1.5/2.0、IE7が以下のケースでどんなリクエストを送信するのか整理されていました。

  • 通常のページロード
  • リロードボタン
  • 強制リロード(Firefoxの強制リロードはCtrl+Reload、IE7の強制リロードはShift+Reload)

このページ の記事全体がとてもためになります。