◉CLAUDE LABEN
●2.1.288 — Claude Code 2.1.288(10月2日)。MCP サーバーが追加の OAuth スコープを求めたとき、再認証のプロンプトが出るようになりました●10/07 — Claude Desktop / Cowork の管理構成キー旧綴りの受付終了まで残り4日。締切後は fail-closed で読み込まれません●LIMIT — 使用量の上限に即座に達するという報告(Max プラン)が、公式 Issue でコメント1,498件に。症状の切り分けを探している方が多い話題です●NEW — 定期タスクの手順書を削る前に、その一冊が何回読み直されるかを数えました●CONNECT — 同じコネクタを仕事用と私用の複数アカウントで使いたいという要望に、260件のコメントが付いています。運用の線引きが論点です●BUDDY — Buddy を戻してほしいという嘆願が、Issue でコメント274件に。機能の廃止とどう付き合うかを考える題材です●2.1.288 — Claude Code 2.1.288(10月2日)。MCP サーバーが追加の OAuth スコープを求めたとき、再認証のプロンプトが出るようになりました●10/07 — Claude Desktop / Cowork の管理構成キー旧綴りの受付終了まで残り4日。締切後は fail-closed で読み込まれません●LIMIT — 使用量の上限に即座に達するという報告(Max プラン)が、公式 Issue でコメント1,498件に。症状の切り分けを探している方が多い話題です●NEW — 定期タスクの手順書を削る前に、その一冊が何回読み直されるかを数えました●CONNECT — 同じコネクタを仕事用と私用の複数アカウントで使いたいという要望に、260件のコメントが付いています。運用の線引きが論点です●BUDDY — Buddy を戻してほしいという嘆願が、Issue でコメント274件に。機能の廃止とどう付き合うかを考える題材です
記事一覧/Claude Code
⟐ Claude Code/2026-08-19中級

一度キャッシュに載った500ページは、直しても消えません

修正をデプロイしたのに壊れたページが出続けたことがあります。原因はコードではなくエッジキャッシュでした。ステータスコードだけを見る保存判定が、200で返る壊れたHTMLを通していたのです。本文の完全性で保存可否を決めるガードの実装と、運用で調整した誤検知の線引きを、実際に踏んだ経緯とともに書きました。

Claude Code259Cloudflare Workers16エッジキャッシュNext.js8運用設計27

✦ プレミアム記事

朝、記事ページの表示崩れを直して push しました。ビルドは通り、デプロイも成功しています。手元で確認すると正しく表示されます。

それなのに、別の端末で開くと崩れたままでした。

シークレットウィンドウでも同じです。もう一度デプロイしても変わりません。コードを何度読み返しても、直っているはずのものが直っていません。この時点で私は、まだキャッシュを疑っていませんでした。ステータスは 200 だったからです。

原因はエッジキャッシュでした。壊れた HTML が正常な応答として保存され、そのまま配信され続けていたのです。修正版のコードは、そのキャッシュの後ろで誰にも読まれずに待っていました。

200 で返る壊れたページ、という盲点

キャッシュの保存判定を書くとき、多くの実装はステータスコードを見ます。私もそうしていました。2xx なら保存し、4xx / 5xx なら保存しません。素直で、たいていの場合は正しく動きます。

問題は、アプリケーションが壊れているのに 200 を返す経路があることでした。

Next.js の App Router では、レンダリング中に例外が起きるとエラー境界(error.tsx / global-error.tsx)が代わりの UI を返します。この応答は「エラー画面を正常に返した」ものなので、HTTP としては 200 です。同じことは、記事本文の読み込みだけが失敗して枠だけが描画された場合にも起きます。ページとしては成立しているのに、中身が空です。

つまりステータスコードは、そのページが読者にとって意味のある内容かどうかを何も語っていません。

応答の状態HTTP ステータスステータス基準の保存判定読者にとって
正常なページ200保存する問題なし
エラー境界が返した画面200保存する壊れている
本文が空のまま描画された枠200保存する壊れている
途中で切れた HTML200保存する壊れている
サーバーエラー500保存しない壊れているが再取得される

表の2行目から4行目が、私が踏んだ穴です。これらは一度保存されると、TTL が切れるまで、あるいは明示的に無効化するまで残り続けます。原因が数分で解決していても、配信は何時間も壊れたままになります。

ここで一番厄介なのは、障害が「継続している」のではなく「固定されている」ことです。ログを見ても、その瞬間のエラーはとっくに収まっています。再現しようとしても再現しません。それでも読者には壊れたページが届きます。デプロイのたびに首を傾げていた朝の正体は、これでした。

事故の起点は、たいてい一瞬の失敗です

なぜ壊れた HTML が生まれたのかも書いておきます。

個人開発で運用しているサイトは、Next.js を Cloudflare Workers に載せています。記事の本文 HTML は JSON のメタデータとは分けて配置し、静的アセットのバインディング経由で読み出す構成です。Worker のサイズ上限に収めるための設計で、その経緯は別の記事に書きました(Cloudflare Workers の 62 MiB 制限とコンテンツ分割アーキテクチャ)。

この構成では、本文の取得は「アセットを読む」という一手が挟まります。デプロイ直後の数秒間、あるいは瞬間的な失敗で、この読み取りが空を返すことがありました。頻度としては稀です。1日に何度も起きるものではありません。

ただ、稀であることは救いになりませんでした。キャッシュは、稀な失敗を恒久的な状態に変える装置だからです。1万リクエストのうち1回だけ失敗しても、その1回がキャッシュに載れば、残りの9,999人はその失敗を見ます。

確率の低さで安心していると、この非対称性を見落とします。私自身、稀にしか起きないのだから急がなくてよいと考えていて、実際には毎日誰かが同じ壊れたページを見ていました。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦キャッシュに保存してよい応答かどうかを、ステータスコードではなく本文の完全性で判定できるようになります
✦壊れたページが配信され続ける事故を、キャッシュへ書き込む一箇所のガードで未然に止められるようになります
✦修正を出しても直らないとき、コードとキャッシュのどちらを疑うかを最初の数分で切り分けられるようになります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

⟐ Claude Code2026-09-01
MCPサーバが十数個を超えてから、起動直後の一覧を信用しなくなりました
起動直後に「接続できません」と並ぶサーバのうち、こちらから手を打てるものは一部だけです。応答なし・起動失敗・プロトコル拒否を分けて返すプローブを実装し、14台構成で逐次22.03秒が並列5.09秒まで縮むところ、待ち時間を詰めると健全なサーバが失敗に化けるところを実測で残しました。
⟐ Claude Code2026-08-16
Todo ツールが既定オフになった Claude Code で、多段作業の進捗をどう追うか
Claude Code v2.1.233 以降、新しいモデルでは TodoWrite と Task 系ツールが既定で読み込まれません。環境変数で戻す前に確かめるべき3つの分岐と、チェックリストの代わりに置いた作業台帳の実装、並列実行で台帳が壊れた境界の実測結果をまとめます。
⟐ Claude Code2026-08-04
ファイルシステムの分離をネットワークと別に締める — 触ったパスを採り、書き込み面から絞る
Claude Code v2.1.216 でファイルシステムの分離をネットワークと切り離して指定できるようになりました。締める前にジョブが触ったパスを strace で採取し、読み取り面と書き込み面を分けて測った実務メモ。同じジョブを3回走らせたときのパス集合の安定率と、接頭辞に畳んだときの安定率の差まで実測しています。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます