Learn VisualLearn API

ETagの識別子ではなく、更新時刻で検証する

Last-Modifiedは、リソースが最後に変更された時刻を、サーバーがクライアントに伝えるヘッダーです。クライアントは、再検証のために、その時刻をIf-Modified-Sinceヘッダーに入れて送り返します。時刻が変わっていなければ、サーバーは304 Not Modifiedを返します。ETagによるIf-None-Matchの検証と、流れも結果も同じです。

ただし、Last-Modifiedには弱点があります。精度が秒までしかないことです。例えば、12:00:03.1に保存したバージョンと、12:00:03.6に保存した別バージョンは、どちらもLast-Modifiedが12:00:03になり、区別できません。

ETagは、時刻ではなくリソースの中身そのものから計算するため、この弱点がありません。上の2つのバージョンも、中身が違えば異なるETagになります。

そのため、サーバーは通常、両方のヘッダーを同じレスポンスに付けます。クライアントは、両方受け取ったときは、より強いETagを優先して使います。

この課の目標

Last-Modifiedを使った再検証のやり取りをたどれる。ETagより弱い確認になる場合を説明できる。

同じリソースの異なる2つのバージョンが、0.5秒の間隔で保存された。Last-Modifiedの時刻はどうなる?