3

Heroku に Rails 4.2 サイトがあり、多数の投稿があるとします。投稿が表示されると、アプリケーションはデータベースにアクセスして、投稿のデータと関連データを他のモデルから取得します。私のウェブサイトへの訪問者(ログインしていないユーザー) には、カスタマイズなしで投稿が表示されるはずなので、これらのページを表示するためにデータベースにアクセスする必要はありません。データベースがスキップされるように、サイトへのすべての訪問者に対して単純なページまたはアクションのキャッシュ (または同等のもの) を設定するにはどうすればよいですか? これらのページのレンダリングを CDN に引き継がせることはできますか?

4

3 に答える 3

4

手始めに、Rails caching guideを見てください。ページとアクションの両方のキャッシュが Rails から削除されました。

生成された投稿の HTML を取得して保存するフラグメント キャッシングを試すことができますが、current_user.

非常に単純なバージョンは次のようになります。

アプリ/ビュー/投稿/show.html.erb

<% cache_unless (current_user, @post) do %>
  <%= @post.body %>
<% end %>

cacheメソッドは、その投稿のキャッシュが存在する場合は読み取りアクションになり、そのキャッシュが存在しない場合は生成および書き込みアクションになります。

ActiveRecord オブジェクトでキャッシュすると、updated_atデフォルトで含まれるキーが作成されるため、投稿が変更された場合、投稿をロードする最初の訪問者の待ち時間が長くなり、後続のすべての訪問者がキャッシュの恩恵を受けます。

あなたの他の質問に関しては、静的ページを提供するための Ruby ベースのツールは他にもたくさんあります。それらすべてのレビューは私の知識を超えており、おそらくこの質問の範囲を超えています。:)

于 2015-10-27T04:55:04.167 に答える