問題タブ [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.

0 投票する
1 に答える
186 参照

ruby-on-rails - RubyOnRails: フラグメント キャッシュ エントリの作成日

フラグメント キャッシュ エントリの作成日を取得することはできますか?

詳細: ChilliProject の Wiki ページで添付ファイル リンクのレンダリングにフラグメント キャッシュを使用しています。キャッシュキーは、添付ファイル名から形成されます。添付ファイルがリロードされた場合は、キャッシュを更新する必要があります。そこで、添付ファイルの変更日とキャッシュエントリの作成日を比較したいと思います。どうすればいいですか?

あらかじめ感謝します。

0 投票する
4 に答える
1068 参照

ruby-on-rails - フラグメント キャッシングと熱心な読み込み: 両方の長所を活かすには?

フラグメント キャッシングと熱心な読み込みは、少なくとも場合によっては相反するように思えます。それぞれに多くのコメントがあり、さらに多くのコメントなどを持つことができる多くの投稿を持つユーザーがいるとしましょう。

ページをレンダリングする必要がある場合、データベースに n-1 回アクセスするのを避けるために、ユーザー、彼女のすべての投稿、すべてのコメントなどを積極的に読み込むことを選択できます。または、各オブジェクトを遅延してロードし、フラグメント キャッシュを利用して、新しいオブジェクトまたは変更されたオブジェクトのみをデータベースにクエリすることもできます。フラグメント キャッシングと熱心な読み込みの両方を使用すると、非常に複雑なクエリを実行し、多くのオブジェクトをインスタンス化してその一部のみを使用する可能性があるため、無駄に思えます。

しかし、ユーザーが多くの Foo を持ち、それがさらに多くの Bar などを持ち、各 Foo がすべての Bar とそれに関連付けられたオブジェクトで同時に完全に作成され、それ以降変更されないアプリケーションがある場合はどうなるでしょうか。 . その場合、レンダリングされた Foo にはフラグメント キャッシングを使用したいと思いますが、関連するすべてのオブジェクトとともに新しい Foo をロードする必要がある場合は熱心な読み込みを使用します。結局のところ、より細かいレベルでフラグメントをキャッシュしても何も得られません。

Railsでこれを達成するための最良の方法は何ですか? 1 つのクエリを実行して Foo の ID だけを取得し、各 Foo をレンダリングする必要があるときに熱心な読み込みで明示的な検索を実行できると思います。これを行うためのより良い/よりエレガントな/より慣用的な方法はありますか?

0 投票する
1 に答える
423 参照

ruby-on-rails - 基本的なショーアクションでフラグメントキャッシングを使用してクエリを回避するRails

私はフラグメントキャッシングで遊んでいます。ガイドを読み、レールキャストを見ました。

基本的な show アクションでフラグメント キャッシュを作成しようとしています。

コントローラ:

意見:

問題: フラグメントがビルドされて読み取られているのに (以下のログを参照)、データベースがまだヒットしています。これは正常な動作ですか?

キャッシュが読み取られる前にクエリをトリガーする前のアクションフィルターを疑っています。

私はフレンドリIDシステムを疑っていましたが、クエリは従来の検索でも発生します。

クエリを回避するには、これをどのようにキャッシュする必要がありますか?

ログ:

0 投票する
2 に答える
545 参照

ruby-on-rails - バックグラウンド ワーカーによるフラグメント キャッシング

多くのパーシャルをレンダリングするページがあります。それらすべてをフラグメントキャッシュするため、非常に高速になります。ほら!

問題は、パーシャルの量が原因で、キャッシュを書き込むときの最初の実行に時間がかかり、リクエストのタイムアウトが発生することです (ただし、他の時間は非常に高速です)。

私もsidekiqを使用しています(ただし、質問はバックグラウンドプロセッサに関連しています)

これらのパーシャルをバックグラウンド プロセスで保存して、(期限切れのために) キャッシュを逃したユーザーがタイムアウトにならないようにする方法はありますか? したがって、すべてのパーシャルを調べて、キャッシュが期限切れになった (または間もなく期限切れになる) ものを再キャッシュしますか?

0 投票する
1 に答える
179 参照

ruby-on-rails - ビュー フラグメントでのロシア人形のキャッシュと許可ベースのリンク

アイテムのコレクション全体がキャッシュされ、コレクション内の各アイテムがそのキャッシュ内に個別にキャッシュされる、ロシアンドールのキャッシュを利用するビューがあります。

ただし、コレクション内の各アイテムには、CanCan を通じて付与された現在のユーザーのアクセス許可に基づいて、編集/削除のリンクが表示される必要があります。したがって、ユーザー A には、自分の投稿の横にある編集/削除リンクのみが表示され、ユーザー B の投稿の横には表示されません。

ユーザー A が投稿を作成するたびに、適切な編集/削除リンクとともにキャッシュされます。これは、彼女の権限に基づいてそれらを表示する必要があるためです。しかし、ユーザー B がコレクションを表示すると、ユーザー A のキャッシュされた投稿と、表示されるべきではない編集/削除リンクが表示されます。確かに、CanCan はこれらの編集/削除アクションの発生を防ぎますが、リンクは引き続き存在します。

とにかく current_user.id に基づいて個々のキャッシュを作成し、(ほぼ) 同一のキャッシュされたコンテンツのバージョンのゴブを防ぐ方法はありますか?

0 投票する
1 に答える
42 参照

ruby-on-rails - 永続オブジェクトを参照せずにRailsのフラグメントキャッシングを使用できますか?

私が取り組んでいるプロジェクトはコンソールスタイルのアプリケーションであり、永続オブジェクトにはまったくアクセスできません。すべてのモデルは一時的なオブジェクトでHashie::Mashあり、さまざまな API 呼び出しへのアクセスを介してオンザフライで拡張および設定されます。

私はRailsフラグメント キャッシングを調べています。例は、フラグメント キャッシング メカニズムがモデルの永続性に依存していることを示しています。

永続モデルを前提としないフラグメント キャッシングの例を探しています。

0 投票する
1 に答える
208 参照

ruby-on-rails - フラグメント キャッシュを事前に構築する (内部アプローチ)

レンダリングに数秒かかるパーシャルを事前にビルドしたいと考えています。プロキシを使用して http 経由でキャッシュをプリロードする関数を見てきましたが、「内部」ソリューションが必要です。

これは私の関数で、myobjectが更新されるたびに呼び出されます:

基本的なヘルパーを使用するパーシャルでは問題なく動作しますが、私のカスタム ヘルパーはエラーをスローします。

undefined method `my_custom_helper_function' for #<#<Class:...>

ヘルパーを に含める必要があると思いthe_controllerますが、そうする方法が見つかりません。事前に助けてくれてありがとう!

0 投票する
2 に答える
2044 参照

ruby-on-rails - Rails 4.2 のフラグメント キャッシングが機能しない

サイトの静的部分をフラグメント キャッシュしようとしていますが、まったく機能していないようです。私はconfig/application.rb次のように設定しました:

私の見解では、私はこれを持っています:

フラグメントをキャッシュに保存したり、後続のページの読み込み時に取得したりすることについて、ログに何も表示されません。また、デフォルトの Rails:file_storeキャッシングを使用してみました。using が正常に動作するため、キャッシュ ストアが機能していることはわかっていRails.cache.fetchます。

どうすればこれを機能させることができますか?