回答編集履歴
2
キャッシュ制御例の改訂
answer
CHANGED
@@ -7,13 +7,16 @@
|
|
7
7
|
**ETag** の例をざっくり書くと、こんな感じです。
|
8
8
|
1. ブラウザからサーバーへの(初回)要求。
|
9
9
|
2. サーバーは、応答ヘッダ ``ETag: "token"`` を含めて``200 OK``を応答。
|
10
|
+
(ブラウザは応答内容をトークンを含めて覚える:キャッシュする)
|
10
11
|
3. ブラウザからサーバーへの(2回目以降の)要求するとき、
|
11
12
|
以前、知った``"token"``を 要求ヘッダ ``If-None-Match: "token"`` に含めて要求
|
12
13
|
(「__もし、違っていたら更新情報を応答して!以前のは覚えてる__」という意味) 。
|
13
|
-
|
14
|
+
4. サーバーは、``"token"`` から、2回以上アクセスしてきたブラウザだと判断して新旧を比較。
|
14
15
|
内容が変わってないなら、エラー ``304 Not Modified``(覚えているのを使ってね)を応答。
|
15
|
-
変わっていると、応答ヘッダに ``ETag: "token2"`` (新しいトークン)を含め、更新内容 を``200 OK``で応答。
|
16
|
+
変わっていると、2.と同様に応答ヘッダに ``ETag: "token2"`` (新しいトークン)を含め、更新内容 を``200 OK``で応答。(ブラウザは応答内容を新しいトークンを含めて覚えなおす:キャッシュ更新する)
|
16
17
|
|
18
|
+
これの繰り返しになります。
|
19
|
+
|
17
20
|
----
|
18
21
|
> ものすごくサーバーに負荷がかかってしまいます
|
19
22
|
|
@@ -23,4 +26,7 @@
|
|
23
26
|
閲覧者にとっても、5秒後にスクロールがリセットされてしまうページになっています。
|
24
27
|
|
25
28
|
追記)
|
26
|
-
サーバー側プログラムを弄るときに「キャッシュ制御という方法がある」と覚えておけばいいと思います。
|
29
|
+
サーバー側プログラムを弄るときに「キャッシュ制御という方法がある」と覚えておけばいいと思います。
|
30
|
+
|
31
|
+
ブラウザ側だけで実装する仕様は無くはないのです(アプリケーションキャッシュ)。
|
32
|
+
が、仕様もWD(作業草案)のまま放置され、実装されている内容は、キャッシュの削除が厄介で、とても「安全」とは言えない状態です。このため、ブラウザ側だけで**安全に更新状態を判断する手段は無い**と考えてください。
|
1
誤字の修正と追記
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
3. ブラウザからサーバーへの(2回目以降の)要求するとき、
|
11
11
|
以前、知った``"token"``を 要求ヘッダ ``If-None-Match: "token"`` に含めて要求
|
12
12
|
(「__もし、違っていたら更新情報を応答して!以前のは覚えてる__」という意味) 。
|
13
|
-
3. サーバーは、``"token"`` から、2回
|
13
|
+
3. サーバーは、``"token"`` から、2回以上アクセスしてきたブラウザだと判断して新旧を比較。
|
14
14
|
内容が変わってないなら、エラー ``304 Not Modified``(覚えているのを使ってね)を応答。
|
15
15
|
変わっていると、応答ヘッダに ``ETag: "token2"`` (新しいトークン)を含め、更新内容 を``200 OK``で応答。
|
16
16
|
|
@@ -20,4 +20,7 @@
|
|
20
20
|
当然です。
|
21
21
|
|
22
22
|
示されたコードは、5秒毎に強制的に再リクエストする実装ですから。
|
23
|
-
閲覧者にとっても、5秒後にスクロールがリセットされてしまうページになっています。
|
23
|
+
閲覧者にとっても、5秒後にスクロールがリセットされてしまうページになっています。
|
24
|
+
|
25
|
+
追記)
|
26
|
+
サーバー側プログラムを弄るときに「キャッシュ制御という方法がある」と覚えておけばいいと思います。
|