アカウント名:
パスワード:
CDN使ったこと無いからよくわからんのだけど
Cache-Control: privateでキャッシュしない→わかるCache-Control: no-cacheでキャッシュする→???
#3233717です、なるほど、no-cacheという名前に惑わされてました。しかしやはりメルカリの記事にある
>キャッシュをしないのはCache-Control: privateが含まれている場合のみとわかりました。
は不可解ですね。no-storeが指定されていた場合はどんな挙動になっていたんだろう。Exoiresについては1970-01-01が指定されてるケースはよく見ますが、1秒前というのは確かに無意味で危険に思えます。
#3233883ですが、説明不足気味だったので、補足します。
ネットワークの構成をオリジンサーバー⇔中間サーバー(複数可)⇔ブラウザと仮定します。
は不可解ですね。
no-cache,privateは解釈が微妙な部分があるので、どのように実装されているかは中間サーバーの仕様によります。
例えば、no-cacheの場合、あまりにも誤解(no-cache,Expires過去でキャッシュされない)が広まりすぎているので、中間サーバーの仕様として、キャッシュしないとしている場合があります。(今回のメルカリの旧サーバーがそれ)
privateは、ざっくりいうと、「ユーザーが識別可能ならキャッシュしてもよい」なのですが、中間サーバーがユーザを識別するのはほぼ困難なので、キャッシュしないとしているのではないかと思います(今回の問題とされているサーバー)
no-storeの場合は、曖昧な解釈の余地がなく、確実にキャッシュされないので、オリジンサーバーがCache-control: no-storeを返していれば、起こらなかった問題ともいえます。
#あとで纏める…かもしれない(非保障)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
なぜCache-Control: no-cacheでキャッシュ? (スコア:0)
CDN使ったこと無いからよくわからんのだけど
Cache-Control: privateでキャッシュしない→わかる
Cache-Control: no-cacheでキャッシュする→???
Re: (スコア:1)
>またno-cacheオプションによりキャッシュ使用時にサーバに対して問い合わせを行うようになり
http://tech.mercari.com/entry/2017/06/22/204500 より
Cache-Control フィールドには、 no-store と no-cache 値(他)がある。
要約すると、no-store は、再使用禁止で、no-cache は、無断再使用禁止である。
(#3233717) (上)は、おそらく、キャッシュ禁止(no-cache)を再使用禁止(no-store)と誤解していませんか?
|no-cache
|Forces caches to submit the request to the origin server for validation before releasing a cached copy.
Re: (スコア:0)
#3233717です、なるほど、no-cacheという名前に惑わされてました。
しかしやはりメルカリの記事にある
>キャッシュをしないのはCache-Control: privateが含まれている場合のみとわかりました。
は不可解ですね。no-storeが指定されていた場合はどんな挙動になっていたんだろう。
Exoiresについては1970-01-01が指定されてるケースはよく見ますが、1秒前というのは確かに無意味で危険に思えます。
Re:なぜCache-Control: no-cacheでキャッシュ? (スコア:0)
#3233883ですが、説明不足気味だったので、補足します。
ネットワークの構成を
オリジンサーバー⇔中間サーバー(複数可)⇔ブラウザ
と仮定します。
>キャッシュをしないのはCache-Control: privateが含まれている場合のみとわかりました。
は不可解ですね。
no-cache,privateは解釈が微妙な部分があるので、どのように実装されているかは中間サーバーの仕様によります。
例えば、no-cacheの場合、あまりにも誤解(no-cache,Expires過去でキャッシュされない)が広まりすぎているので、中間サーバーの仕様として、キャッシュしないとしている場合があります。(今回のメルカリの旧サーバーがそれ)
privateは、ざっくりいうと、「ユーザーが識別可能ならキャッシュしてもよい」なのですが、中間サーバーがユーザを識別するのはほぼ困難なので、キャッシュしないとしているのではないかと思います(今回の問題とされているサーバー)
no-storeの場合は、曖昧な解釈の余地がなく、確実にキャッシュされないので、オリジンサーバーがCache-control: no-storeを返していれば、起こらなかった問題ともいえます。
#あとで纏める…かもしれない(非保障)