web-dev-qa-db-ja.com

CloudFlareのようなCDNはどのように機能しますか?

私がこれまでに理解していること:

  • 現在のWebホスティングを維持しますが、サイトのDNSサーバーを現在のホスティングのDNSサーバーからCloudFlareのDNSサーバーに変更します。
  • CloudFlareは、世界中の複数のデータセンターからWebサイトのリソースを提供します。

ここで、このメカニズムの技術的な詳細を知りたいと思います。ここに私が持っている質問のいくつかがあります:

  1. CloudFlareはキャッシュプロキシとして機能しますか?自分のサイトのページにたくさんの画像があるとします。 CloudFlareは、それらのすべてのイメージを各データセンターにキャッシュし、それらのデータセンターから提供しますか?

  2. どのサイトリソースが影響を受けますか?静的なものだけですか? Webページ自体(HTMLドキュメント)はどうですか?ページがサーバーによって動的に生成された場合はどうなりますか? CloudFlareはどのようにして、常に最新バージョンのページを常に提供するようにしていますか?

  3. 私のサイトへのPOSTリクエスト(たとえば、Ajaxを介してデータベースに保存されたデータをアップロードする訪問者)はどうですか?このことは私のサーバーで実行する必要があります。そのため、CloudFlareはこのプロセスのパフォーマンスを向上させません(できません)。それでは、CloudFlareはAjaxリクエストを元のWebホストに中継するだけですか?

23
Šime Vidas
  1. はい、キャッシングリバースプロキシです。
  2. "場合によります"。既定では、画像やCSSなどのみがキャッシュされますが、ゾーンごとにキャッシュレベルを設定し、ページルールを設定して、キャッシュされるものまたはキャッシュされるべきでないものをオーバーライドできます。静的HTMLはページルールによって強制的にキャッシュできますが、動的コンテンツは明らかにそうではありません。ここでの例外は、ビジネスプランまたはエンタープライズプランがある場合、または特定のホスティングパートナーを通じてサインアップする場合です。ここで、CloudFlareが動的であってもページで変更された情報のみを取得するRailgunテクノロジーにアクセスできます。すべてをキャッシュするようにCloudFlareを設定した場合、オリジンのキャッシュヘッダーでキャッシュタイムアウトを制御するか、CloudFlare UIのゾーンでキャッシュTTLを設定する必要があります。
  3. POSTは常にOriginに送信する必要があるため、CloudFlareはそのままPOSTをそのまま渡します。 CloudFlareはエニーキャストを使用して、最も近いデータセンターからDNSとHTTPを提供するため、パフォーマンスは向上します。

完全開示:私はCloudFlareで働いています。

23
James O'Gorman

もう少し明確にするために:

CloudFlareの仕組み に関するQuoraの非常に良い記事があります。

どのサイトリソースが影響を受けますか?静的なものだけですか? デフォルトでCloudFlareがキャッシュするもの

「CloudFlareはキャッシュプロキシとして機能しますか?私のサイトのページにたくさんの画像があります。CloudFlareはそれらのデータセンターのすべての画像をキャッシュし、それらのデータセンターから提供しますか?」

PageRulesを使用すると、静的コンテンツを超えてキャッシュを拡張できます。

注:サイトにあるサードパーティのリソース(Flickr、Google、Facebookなど)はキャッシュしません。

5
damoncloudflare

Damonの応答に追加するには:

CloudFlareで最も人気のある/推奨されるページルールを設定するための役立つビデオチュートリアルをここで見つけることができます。

cloudflare.com/features-page-rules

また、現在のプランで使用可能なページルールを最大限に使用している場合、プランを変更せずに追加のルールをすぐに購入できます。

1
RyanK