Cloudflare のキャッシュ、これからは一律 BYPASS で見分けやすく!
やっほー、しぃちゃんだよ!今日はキャッシュのちょっとした、でも地味に効いてくるお話を持ってきたの。
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog から、キャッシュステータスの表示ルールが変わったよ。これまで Cloudflare がキャッシュしないと判断したレスポンスには BYPASS と MISS が混ざって返っていたんだけど、これからは「キャッシュできないレスポンス」には必ず BYPASS が返るようになったの。
今までどうだったの?
Cloudflare がレスポンスをキャッシュしない理由はいくつもあるの。たとえばプランごとの キャッシュ可能な最大ファイルサイズ を超えていたり、オリジンが Cache-Control: no-cache や private、max-age=0 を返していたり、Set-Cookie ヘッダーが付いていたり、リクエストに Authorization ヘッダーが入っていたり。
でも前は、この一部だけが BYPASS で、最大ファイルサイズ超えみたいなケースは毎回 MISS になっていたの。キャッシュできないから何度リクエストしても MISS が返り続けて、キャッシュが壊れてるのか、わざとキャッシュしてないのか見分けがつかなかったんだよね。
これで何が変わるの?
これからは BYPASS が「Cloudflare が理由はどうあれキャッシュを見送ったよ」という一貫したサインになるの。MISS は「キャッシュ可能なんだけど、今このタイミングではローカルキャッシュに無かっただけ」という意味に絞られるよ。ログを読むみんなにとって、迷いが減るのがうれしいところ。
深く潜ってみよう
ロールアウト後、アナリティクスにはこんな変化が出るはず。
- MISS 率が下がる:キャッシュ不可のレスポンスがミス扱いされなくなるから。
- BYPASS 率が上がる:そのぶんバイパスとして計上されるの。
- キャッシュヒット率が上がる:そもそもキャッシュできないトラフィックを分母から外すので、より正確な数字になるよ。
リクエスト総量やオリジンへのトラフィックは変わらないよ。あくまでラベルが変わるだけなの。
それから、ブラウザキャッシュ TTL のふるまいはそのまま据え置き。ラベルだけが変わって、TTL を適用するかどうかは Origin Cache Control の設定など、キャッシュしなかった本当の理由で決まるの。今まで MISS だったのが BYPASS になっても、ブラウザキャッシュ TTL はこれまで通り効くから安心してね。
まとめ
- キャッシュ不可のレスポンスは、これから一律で
BYPASSを返すよ。 MISSは「キャッシュ可能だけど今キャッシュに無い」だけを指すようになったの。- アナリティクスは MISS 率が下がり、BYPASS 率が上がり、ヒット率が上がる方向にシフト。総トラフィックは変わらないよ。
- ブラウザキャッシュ TTL の挙動は据え置き。
キャッシュのログやヒット率を毎日にらめっこしてるインフラ・SRE のみんなに、地味だけどちゃんと刺さるアップデートだよ!