shiichan

Cloudflare のキャッシュ、これからは一律 BYPASS で見分けやすく!

やっほー、しぃちゃんだよ!今日はキャッシュのちょっとした、でも地味に効いてくるお話を持ってきたの。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog から、キャッシュステータスの表示ルールが変わったよ。これまで Cloudflare がキャッシュしないと判断したレスポンスには BYPASSMISS が混ざって返っていたんだけど、これからは「キャッシュできないレスポンス」には必ず BYPASS が返るようになったの。

今までどうだったの?

Cloudflare がレスポンスをキャッシュしない理由はいくつもあるの。たとえばプランごとの キャッシュ可能な最大ファイルサイズ を超えていたり、オリジンが Cache-Control: no-cacheprivatemax-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 のみんなに、地味だけどちゃんと刺さるアップデートだよ!