有効な機能がレスポンス内容を必要としない場合、Cloudflare はデータが到着次第クライアントへ送れます。一部の機能は、エッジでレスポンス内容を検査したり変更したりします。
検査により、レスポンスの一部がエッジで保持されることがあります。その結果、最初のバイトまでの時間(TTFB)が伸びたり、段階的な配信が遅れたりすることがあります。保持されるデータ量は、機能とレスポンスによって異なります。
Cloudflare の機能は、主に Content-Type が text/html のレスポンスを検査します。本文を変更する機能もあれば、読み取るだけの機能もあります。
次の機能は、有効かつ適用対象のときに HTML レスポンス本文を変更できます。
| 機能 | 本文の変更 |
|---|---|
| AI Labyrinth | 許可されていない AI クローラー向けに不可視リンクを追加します |
| Always Online | アーカイブ済みページにバナーを追加します |
| Automatic HTTPS Rewrites | 対象の HTTP リンクを HTTPS に書き換えます |
| Cloudflare challenge features | チャレンジスクリプトを挿入するか、チャレンジ用コンテンツを返します |
| Cloudflare Fonts と Automatic Platform Optimization | Google Fonts の参照を書き換えます |
| Email Address Obfuscation | ページ内のメールアドレスを難読化します |
| Markdown for Agents | 対象リクエストの HTML を Markdown に変換します |
| Replace insecure JavaScript libraries | サポート対象の脆弱なライブラリ URL を書き換えます |
| Rocket Loader | スクリプトの読み込み動作を変更します |
| Web Analytics | Real User Monitoring ビーコンを挿入します |
セキュリティ機能と AI 機能は、変更せずに HTML を読むこともあります。Prefetch URLs は、text/plain として配信される URL マニフェストを読みます。
この一覧には、レスポンス内容を検査する明示的なルールは含めていません。トラブルシューティング時は、各ルールを個別に確認してください。
レスポンス本文の検査は、プログレッシブ HTML とプレーンテキストのストリームに影響することが多いです。明示的な検査ルールで選ばれた他のレスポンスにも影響することがあります。クライアントは、オリジンが送ったタイミングより遅く、またはより大きなまとまりでデータを受け取ることがあります。
オリジンでは正確な Content-Type を設定してください。ストリーミング API のレスポンスを、そのメディアタイプが必要でない限り text/html や text/plain として配信しないでください。
Cache-Control: no-transform レスポンスディレクティブは、対応機能による本文変更を防ぎます。読み取り専用の検査は防げません。このディレクティブのその他の効果は、Cache-Control ディレクティブ を参照してください。
Cloudflare 経由にしたあと、レスポンスのストリーミングが止まった場合は次を確認します。
- Cloudflare を介さず、オリジンがデータを段階的に送っていることを確認します。
- オリジンレスポンスの
Content-TypeとCache-Controlヘッダーを確認します。 - レスポンス経路に適用される機能とルールを確認します。
- パス固有の Configuration Rule を作成し、Response Body Buffering を None にします。
- Cloudflare 経由でもう一度レスポンスをテストします。
None 設定では、検査なしで本文をストリーミングします。一致するレスポンスでは、セキュリティ、最適化、分析の機能が動作しなくなることがあります。マッチング式はできるだけ狭くしてください。
設定値と API 構成は、Response Body Buffering を参照してください。