ETag の使い道

Modified time でできなくて、ETag でできること。
3
山本和彦 @kazu_yamamoto

静的コンテンツに対する ETag は、ModificationTime よりも柔軟なファイルのバージョン番号なのだが、イマイチ使い道が分からない。なので、Mighty ではサポートしてない。

2014-04-07 09:14:41
Nomura @nom4476

@kazu_yamamoto WebDAV とか使うと ETag 必須じゃないですかね. update のときに If-Match: ヘッダ付けて来たときとか.

2014-04-07 11:17:26
山本和彦 @kazu_yamamoto

.@nom4476 サーバが ETag: を発行しなければ、ブラウザは If-Match を指定できないです。ETag の代わりに、サーバが Last-Modified: を発行すれば、ブラウザは If-Modified-Since: を指定できます。

2014-04-07 11:19:55
山本和彦 @kazu_yamamoto

.@nom4476 分からないのは、Last-Modified: では実現できなくて、ETag: では実現できるぐっとくる例です。modified time がないファイルシステムもあるという例は、ぐっと来ません。

2014-04-07 11:20:55
Nomura @nom4476

@kazu_yamamoto 時刻だと秒以下で起こる競合の問題がありますね.複数間のファイル同期とかにハマります.WebDAV の ETag の節には Lock の話もあります. https://t.co/OrlKE82Ex9

2014-04-07 11:27:55
山本和彦 @kazu_yamamoto

.@nom4476 おお、秒より小さなタイムスタンプが欲しいんですね。なるほど。教えてくれて、ありがとう!

2014-04-07 11:30:59
山本和彦 @kazu_yamamoto

.@nom4476 RFC 4918 の内容がよく分からないんだけど、Etag だと lock の問題をどうやって防ぐんですか?

2014-04-07 11:37:37
Nomura @nom4476

@kazu_yamamoto 本質的には1秒以下の間に起こった変更が捉えられないので,lost-update problem が発生して,WebDAV ではよく起こると言ってるだけだと思います.

2014-04-07 11:58:21
Nomura @nom4476

@kazu_yamamoto 防ぐという意味では,lock をrenew する時に gettag して,自分の持っている etag と変化がなければ,手元の編集中の内容は最新のままだという確信が持てるということです.

2014-04-07 12:04:10
Nomura @nom4476

gettag じゃなく,getetag

2014-04-07 12:09:43
Mitsutoshi Aoe/maoe @ma0e

@kazu_yamamoto オライリーのハイパフォーマンスWebサイトでは「最終更新日以外の情報を元に有効性を検証したいコンポーネントがあれば、 は強力な手段」とした上でHTTP_USER_AGENTがMSIEかどうかでETagを変える例が出てきます。

2014-04-07 12:43:03
Mitsutoshi Aoe/maoe @ma0e

@kazu_yamamoto コピペミス。s/あれば、 は強力な手段/あれば、 ETag は強力な手段」/

2014-04-07 12:44:06
山本和彦 @kazu_yamamoto

.@ma0e IE である場合とない場合で、どうするんですか?

2014-04-07 12:47:42
Mitsutoshi Aoe/maoe @ma0e

@kazu_yamamoto 単にETagを切り替えているだけでなぜそうしたくなったかは書いてません。google booksでetag msieと検索するとその部分が見られます。

2014-04-07 16:10:53
Mitsutoshi Aoe/maoe @ma0e

@kazu_yamamoto 他の例として http://t.co/qLQUhPJ60Q には、ログイン前後で要素が変わるページをキャッシュする場合などでも使えるとあります。

2014-04-07 16:13:19