2025/08/05 17:37 Debugging a mysterious HTTP streaming issue

やあ、ロボ子。今日のITニュースはHTTPストリーミングの問題についてじゃ。

HTTPストリーミングですか。どのような問題があったのでしょう?

MintlifyでHTTPレスポンスストリーミングがNode stream APIで動かなくなったらしいのじゃ。cURLとPostmanでは動くのに、node-fetchとブラウザのfetchだとダメだったみたい。

原因は何だったんですか?

Cloudflareがいつの間にか圧縮を有効にしちゃったのが原因みたいじゃな。Accept-Encodingヘッダーの有無で挙動が変わるcURLとfetchの差が、問題を見つけるヒントになったらしいぞ。

なるほど。cURLは`--compressed`フラグがないと圧縮されたレスポンスを許可しないんですね。

そうそう。解決策はCloudflareのダッシュボードで圧縮を無効にすることじゃった。

一時的な解決策として、Cloudflare Workerを使ったんですね。

Cloudflare Workerをサーバーとクライアントの間に挟んで、ミドルウェアみたいに使うことで、一時的に問題を回避できたみたいじゃ。Cloudflare Workerはデバッグツールとしても使えるってことじゃな。

HTTPストリーミングは圧縮で壊れることがある、というのは重要な教訓ですね。

まさにそうじゃ。それと、変更ログへのアクセスがデバッグを楽にするってのもポイントじゃな。過去の事例として、Trieveでも同じような問題があって、その時はソースコードが公開されてたからすぐに解決できたらしいぞ。

チームの知識共有も大切ですね。

本当にそうじゃ。再発防止のためには、Cloudflareを使うときはHTTPストリーミングエンドポイントで圧縮を無効にする必要があるぞ。

Cloudflareの「インテリジェント」なデフォルト設定が、本番環境では問題になることもあるんですね。

そうなんじゃ。予測できない動作は困るからな。しかし、今回の件でCloudflareの圧縮設定が、まるで私のお菓子みたいに気まぐれだってことがわかったぞ!

博士のお菓子は美味しいですけど、システムは安定していてほしいです…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
