Rails 4 アプリでキャッシングを開始しようとしていますが、キャッシュ キー設定、キャッシュ ヘルパー、および自動有効期限のバージョンが異なるため、少し混乱しています。
では、いくつかの例を挙げて質問させてください。例を意図的に別の質問に移動することはありません。これにより、誰でも一目で微妙な違いを理解できるようになると思います。
1: サイドバーの最新ユーザー
最新のユーザーを表示したい。もちろん、これはアプリ内のすべてのユーザーに同じであり、すべてのページに表示されます。railscastsexpire_fragment...
で、コントローラーを呼び出して期限切れになった同様の例を見ました。ただし、他のリソースによると、これは何かが変更されると自動的に期限切れになるはずです (たとえば、新しいユーザー登録)。私の質問: キーを適切に設定していますか? 自動期限切れになりますか?
_sidebar.html.erb (サイドバーの全ページに表示)
<% cache 'latest-users' %>
<%= render 'users/user_sidebar' %>
<% end %>
_users_sidebar.html.erb
<% @profiles_sidebar.each do |profile| %>
<%= profile.full_name %>
........
<% end %>
2: 製品ショーページ
特定の商品を表示したい (ショーページのみ)。これもすべてのユーザーで同じですが、より多くの製品があるため、より多くのバージョンがあります。質問は同じです。キーを適切に設定していますか?また、キーは自動的に期限切れになりますか?
製品/show.html.erb
<% cache @product %>
<%= @product.name.upcase %>
<%= @product.user.full_name %>
<% end %>
3: 製品/インデックス (will-paginate gem でページ化)
ここでは、ページネーションの特定のページにあるすべての製品を一度にキャッシュして、製品がブロック単位でキャッシュされるようにします。これもすべてのユーザーに共通で、 にのみ表示されますproducts index page
。(後で、このページの個々の製品に を実装したいと思いrussian-doll-caching
ます。) 私の質問: これは正しく行っていますか? 自動期限切れになりますか?
製品 index.html.erb
<% cache [@products, params[:page]] %>
<%= render @products %>
<% end %>
_product.html.erb
<%= product.name %>
<%= product.user.full_name %>
.....
私が使用しようとしたサンプルコード(それが良いものかどうかはわかりません):
最初は索引ページがあり、ロシア人形はありません。
2 つ目は、コメント付きの番組ページ用のロシア人形です。