問題タブ [fragment-caching]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails-3 - スプリーで構築されたRuby on Railsアプリで、VarnishのフラグメントキャッシングにESIを使用する方法は?
基本的な構文がうまくいきません。ユーザー固有の情報をキャッシュに保存したくありませんが、ページの残りの部分をキャッシュしたいと考えています。Spree 上に構築された Rails アプリでそれを行うための構文を提供してください。
varnish-vcl - キャッシュから esi タグを含むページを取得するときに、Varnish が ESI 要求を処理していませんか?
ページのフラグメントをキャッシュしないために ESI を使用しています。フラグメントをキャッシュしないように、vcl ファイルに次の構成を記述しました。
ニスがバックエンドからページ全体を初めて取得するとき、「/fragment」の個別のリクエストを送信し、ページの適切な場所に配置します。ただし、ページを更新すると、ワニスはメインページのみを再要求し、キャッシュでそれを見つけます。次に、このページでesiフラグメントを検索せず、リクエストを送信しません。代わりに、メイン ページのキャッシュ中にメイン ページ自体に格納され、ルックアップ中にそこから取得されます。メインページの残りのコンテンツをキャッシュから提供しながら、メインページのリクエストが行われるたびに、バックエンドからフラグメントを取得する方法を知りたいです。
ruby-on-rails-4 - Rails 4フラグメントキャッシュページ全体。モデルのキャッシュを期限切れにする方法
モデルのメイン ページ フラグメントを期限切れにするにはどうすればよいですか?
私のHTMLで
私の投稿モデルでは
これはキャッシュをクリアしません。投稿を作成または更新すると、キャッシュがクリアされません。ActionController::Base.new.expire_fragment('main-page')
Rails コンソールで実行すると、「nil」が返されます。ポストモデルのRails.cache.clear
代わりに実行すると、機能します。ActionController::Base.new.expire_fragment('main-page')
ruby-on-rails - Rails 4 のさまざまなビューのフラグメント キャッシング
Rails 4 アプリでキャッシングを開始しようとしていますが、キャッシュ キー設定、キャッシュ ヘルパー、および自動有効期限のバージョンが異なるため、少し混乱しています。
では、いくつかの例を挙げて質問させてください。例を意図的に別の質問に移動することはありません。これにより、誰でも一目で微妙な違いを理解できるようになると思います。
1: サイドバーの最新ユーザー
最新のユーザーを表示したい。もちろん、これはアプリ内のすべてのユーザーに同じであり、すべてのページに表示されます。railscastsexpire_fragment...
で、コントローラーを呼び出して期限切れになった同様の例を見ました。ただし、他のリソースによると、これは何かが変更されると自動的に期限切れになるはずです (たとえば、新しいユーザー登録)。私の質問: キーを適切に設定していますか? 自動期限切れになりますか?
_sidebar.html.erb (サイドバーの全ページに表示)
_users_sidebar.html.erb
2: 製品ショーページ
特定の商品を表示したい (ショーページのみ)。これもすべてのユーザーで同じですが、より多くの製品があるため、より多くのバージョンがあります。質問は同じです。キーを適切に設定していますか?また、キーは自動的に期限切れになりますか?
製品/show.html.erb
3: 製品/インデックス (will-paginate gem でページ化)
ここでは、ページネーションの特定のページにあるすべての製品を一度にキャッシュして、製品がブロック単位でキャッシュされるようにします。これもすべてのユーザーに共通で、 にのみ表示されますproducts index page
。(後で、このページの個々の製品に を実装したいと思いrussian-doll-caching
ます。) 私の質問: これは正しく行っていますか? 自動期限切れになりますか?
製品 index.html.erb
_product.html.erb
私が使用しようとしたサンプルコード(それが良いものかどうかはわかりません):
最初は索引ページがあり、ロシア人形はありません。
2 つ目は、コメント付きの番組ページ用のロシア人形です。
ruby-on-rails - クエリをキャッシュした後のrails4がまだ実行されている
Rails 4 アプリがあり、キャッシュを実装しようとしています。@profiles_sidebar.first
新しいユーザーが作成されたかどうかを確認するためにキャッシュキーを使用します。まだ db クエリがあるため、これで問題ないかどうかはわかりません。これは、キャッシュを期限切れにする必要があるかどうかを確認するための推奨メカニズムですか? 私はうまくやっていますか?
キャッシュを読み取るときのコンソール コード:
ruby-on-rails - rails4 キャッシュの命名規則
Rails 4アプリがあります。どういうわけか異なるキャッシュ キーを区別する必要がありますが、命名規則がわかりません。
最初の例:
index
、completed_tasks
およびincoming_tasks
アクションを含むタスクモデルがあります。ページネーションのため、 A は同じインスタンス名 ( @tasks
) を持っています。
現在、キャッシュキーは以下のように命名されています。私の質問: 1. キャッシュキー構造は十分ですか? 2. キーのパーツを配列に入れる順序は重要ですか? たとえば、 ?[@tasks.map(&:id), @tasks.map(&:updated_at).max, 'completed-tasks']
よりも優れています。['completed-tasks', @tasks.map(&:id), @tasks.map(&:updated_at).max]
completed_tasks.html.erb
tasks.html.erb
incoming_tasks.html.erb
2 番目の例:
の命名規則にも問題がありますrussian-doll-caching
。
このバージョンで十分でしょうか。それとも、他のページで同様の名前のキャッシュ キーが発生する問題を回避するために、外部と内部の両方のキャッシュ キー配列に文字列を常に配置する必要があります。たとえば、私の例の内部キャッシュとまったく同じページを配置する予定です<% cache(@product) do %>
。profile#show
キーが異なる必要がある場合、内側のキャッシュキーと外側のキャッシュキーに名前を付けるレールの規則は何ですか?
ruby-on-rails - rails4 二重入れ子モデル ロシア人形キャッシング
私のrails4アプリには、投稿用に次の構造があります。ユーザーは投稿にコメントでき、コメントに返信を書き込むことができます。ページで自動期限切れキーを使用して russian-doll-caching を使用したいのですが、この場合、どのようにすればよいかわかりません。
この場合の使い方を教えてもらえますか?
モデル:
投稿/index.html.erb
_post.html.erb
_post_comment.html.erb
_post_comment_reply.html.erb
ruby-on-rails - Rails 4キャッシュの有効期限が機能しない
Rails アプリでネストされたキャッシュを使用しようとしていますが、キャッシュ キーがuser.profile.full_name
変更されても有効期限が切れません。そのため、ユーザーが自分の名前を変更しても、表示される full_name_profile_product.html.erb
は古い名前のままです。
キーを変更するにはどうすればよいですか?
プロファイル/show.html.erb
_profile_products.html.erb
_profile_product.html.erb
ruby-on-rails - フラグメントキャッシングからいくつかの部分を除外するレール
認証に pundit gem を使用する Rails 4 アプリがあります。以下のコードのように russian-doll フラグメント キャッシングを行うと、承認に使用される条件ステートメントもキャッシュされますが、これは良くありません。編集/削除ボタンはpost.user
.
これを回避する良い方法は何ですか? キャッシュをより小さな部分に分割する必要がありますか、またはキャッシュの一部を除外する方法はありますか? この場合のレール規約は何ですか?
index.html.erb
_post.html.erb
ruby-on-rails - Railsフラグメントキャッシングが機能しない
Web サイトのパフォーマンスを高速化するためにフラグメント キャッシュを追加しようとしていました。今、development
モードでテストしたので、これを変更します
そして、erb
しかし、うまくいかないようです。ページを更新するたびに、ターミナルにクエリが再び表示されました。
初めてクエリを実行するのは 1 回だけだと思っていましたか、それともキャッシュの概念を誤解していましたか?