2017-06-27 10 views
0

私はhereについてはthisとRailsのドキュメントを読んでいますが、概念的には2つのことについてまだ混乱しています。CDNはどのようにRailsアプリケーションで動作しますか?

  1. コントローラとモデルのようなRailsファイルはいつ再生されますか?

  2. イメージが更新されたら、どのようにCDNキャッシュを無効にしますか?

  3. しかし、動的コンテンツを持つファイルについては、ユーザーの名前や住所のようなものはどうでしょうか。どのように処理されますか?

これは私の理解です。私はmisspeakなら、私を修正してください:

要求が行われる。まず、myrailsapp.comに言う私たちは今(それはcdnmyrailsapp.comだと言う)CDNアドレスにmyrailsapp.comのCNAMEを指摘しているため、要求は最初のCDNに行きます。私は、DNSサーバがこれらの要求をCDNにルーティングすることを理解していると思います。 CDNは、キャッシュされたコンテンツがあるかどうかをチェックします。それがなければ、CDNが実際のサーバーに要求を転送すると思いますか? Rails用のコントローラがヒットし、静的なアセットまたはjavascriptファイルがCDNに渡されるのはそのときです。将来、そのファイルに対するすべての要求は、CDN上のキャッシュされたバージョンを使用します。

+0

通常、リクエストが入ってコントローラにルーティングされます。そのアクション内のどのモデルでも必要なデータを取得し、そのデータをビューに転送します。これは、ビューのためにページをロードしている間、CDNからのデータを取得することになります。 Railsはプリコンパイルされた指紋IDを使ってこれらのアセットをキャッシュします。これらのアセットが変更された場合にのみ、キャッシュをスキップします。 – bkunzi01

+0

CDNは、動的に変更されないアセット(画像、スタイルシートなど)をキャッシュするためのものです。 DNSはCDNについて知りません。env.fileにconfig.action_controller.asset_hostを設定しているため、アプリケーションが実行します。だから、それはCDNから資産を「取得」するレールアプリです。動的なものをリクエストするたびに、アプリはそれをオンザフライで作成します。そのレベルでのキャッシュは、CDNではなくアプリケーション自体で実行されます。 –

答えて

0

​​は、モデルやコントローラではなく、静的資産(コンパイル済みのCSSやjsファイルなど)のみを提供できます。 (このプリコンパイル済みのファイルはassets:precompileで入手できます)

サーバはすべて​​を使わずに正しく動的コンテンツを配信します。

ファイルは​​ドメイン(サンプルはhttp://c000000.cdn.rackspacecloud.com)に配置され、アプリケーションはドメインに残ります(CNAMEは必要ありません)。

画像はアップロードする際に手動で送信する必要があります(fog-awsfog宝石)。

関連する問題