問題タブ [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 に答える
464 参照

ruby-on-rails - Rails (3.0.7) でフラグメントの作成と期限切れのフラグメントをテストする

アプリケーションにフラグメント キャッシュを実装しようとしています。めったに変更されない大量のデータが表示されるため、フラグメント キャッシングが、私が抱えていたパフォーマンスの問題の最良の解決策になると考えました。

私は Rail の組み込みフラグメント キャッシングとキャッシュ スイーパーを使用していますが、フラグメントの作成/有効期限切れをテストする良い方法が見つからないようです (rspec とその仲間を使用)。

どんな助けでも大歓迎です。


明確化:私が実際にテストしたいのは、適切なフラグメントが期限切れになっていることだけであり、特に何かがキャッシュに出入りしていることではありません。

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

ruby - ruby on rails 3.1 フラグメントキャッシング

私はアプリを持っていて、ページの一部をキャッシュしたいのですが、これを行う方法についてたくさん読んでいます。

私のプロジェクトでフラグメント キャッシングが最適な方法であることは理解していますが、これを実装する方法を学ぶための簡単な例が見つかりません。

autoexpireでフラグメントキャッシュを使用したいと思います。

autoexpire はどこで設定しますか? 例はありますか?これどうやってするの?

0 投票する
3 に答える
1308 参照

c# - 部分的な出力キャッシュをクリアする

出力キャッシュ(部分出力キャッシュ)であるコントロールを持つページがあります。これらは次のように設定されています。

Global.asax

特定のページでこの出力キャッシュをクリアできるように設定するにはどうすればよいですか?

MyPageWithCachedControl.aspx?ClearCache=true???のように設定することは可能ですか?

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

ruby-on-rails - Rails 3 キャッシング: アクションおよびフラグメント キャッシングでスイーパーを使用してキャッシュを期限切れにするにはどうすればよいですか?

レストランのメニューを表示するページに取り組んでいます。私は 2 つのモデルを持っています: FoodMenu has_many :products と Product belongs_to :food_menu です。どちらのモデルのコントローラーも持っていません。代わりに、「pages_controller.rb」を使用して、各 FoodMenu とその製品を「menu」アクションで表示しています。

メニュー ページ (localhost:3000/menus) でアクション キャッシュを使用したいのですが、これは機能していますが、製品を更新、作成、または破棄するときにキャッシュを期限切れにすることができません。

「pages_controller.rb」の上部には、次のものがあります。

http://guides.rubyonrails.org/caching_with_rails.html#sweepersのサンプル コードを使用して、 app/sweepers に Product モデルと FoodMenu モデルの個別のスイーパーを作成しようとしましたが、うまくいきませんでした。次に、コントローラーが使用するすべてのモデルをスイーパーが監視することになっている SO エントリを読み込んだので、Product モデルと FoodMenu モデルの両方を監視し、"メニュー」アクション。それもうまくいきませんでした。私は何を間違っていますか?「pages_sweeper.rb」で私が今持っているものは次のとおりです。

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

ruby-on-rails - オブジェクトの更新時にオブジェクトインデックスのフラグメントキャッシュを期限切れにする方法

私はこのフラグメントをフラグメントキャッシュしています:

さて、明らかに、オブジェクトが更新されるたびにそのキャッシュを期限切れにする必要があります(dbの観点から言えば)。

だから私はこの行を置くことになっています:

...コントローラ間であちこちで、アクションがオブジェクトを更新(または保存)するたびに。

しかし、更新(または保存)のたびにexpire_fragmentコマンドをトリガーするオブジェクトモデル(/app/models/object.rb)に何らかのフックを書き込むなど、これを行うDRYerの方法があるかどうか疑問に思っています。

出来ますか?

編集#1:

たぶん私は次のようにオブジェクトモデルのsaveメソッドを上書きすることができます:

ただし、これが正しく機能するためには、「save」メソッドが* update_attributes *、save!などの他のすべての保存メソッドによっても呼び出されることを確認する必要があります。、など。これは本当ですか?

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

asp.net - asp.net でキャッシュされたユーザー コントロールを更新する

ログインしたユーザーのプロフィール写真を表示するために、ページにユーザーコントロールがあります。を使用してこのユーザー コントロールをキャッシュし<%@ OutputCache Duration="120" VaryByParam="none" %>ました。

ここで問題に直面しています。つまり、現在ログインしているユーザーをログアウトし、別のユーザーとしてログインすると、プロファイル画像のユーザー コントロールが更新されず、以前にログインしたユーザーの画像が表示されたままになります。

ユーザーがログアウトして別のユーザーがログインした後にユーザーコントロールが更新されるときに、この問題を解決するのを手伝ってください。

どんな助けでも大歓迎です。

前もって感謝します

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

ruby-on-rails - 別のfragment_cachingのrailsキャッシュストアを設定する

Railsフラグメントキャッシングをfile_storeとして構成し、メモリストアを使用して値を格納するRails.cacheオブジェクトを持つことは可能ですか?それとも、どちらも最終的には同じストレージメカニズムですか?

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

ruby-on-rails - Rails でアセットが見つからない (フラグメント キャッシュも使用)。memcache なし

Heroku で Rails 3.1.1 を使用し、2 つの Web dyno で実行しています。

私は現在 memcache を使用していません。フラグメント キャッシングを正常に使用しています。

ログに大量のキャッシュ ミスが記録されています (そして、ごくわずかなキャッシュ ミスが記録されています)。facebox-2 (実際に「キャッシュを新しく」取得するのは、キャッシュされたフラグメントの外側にあることに注意してください。

ご覧のとおり、ミスの後に「ストア」が続くわけではないため、私が理解している限り、実際にはキャッシュされていません。

プロダクション.rb

rake assets:precompileローカルで本番モードで正常に実行し、Heroku にも正常にアップロードしました。

私の問題はこの質問に非常に密接に関連していると思いますが、本番モードで実行しています (違いはありませんよね?)。

Memcached を少し試してみましたが、使い方はまだ初心者です。

私の個人的な信念は、検証を台無しにするキャッシュ内からキャッシュされた画像を取得しようとしているということです。たとえば、断片化されたキャッシュで探している

banners/annons-884c9fbe7f6805249247ef02438fca08.jpg

一方、次のような別の「コード」でキャッシュされる場合があります

これは正しいです?

私の質問に:

  1. この質問と同じ問題がありますか? いわば、キャッシュ内にキャッシュしているということですか?

  2. Memcached と Rake::Cache はこれを処理する方法ですか? もしそうなら、断片化された html ページを memcache ではなくファイルとして保存することをお勧めします (それらは 1.000 x 3 Mb です)。どうやってやるの?

  3. アプリには書き込み権限がないため、fragment_caching が実際に Heroku でこれらのファイルを作成しないのは正しいですか?

  4. これは私のアプリのパフォーマンスに影響を与える可能性がありますか (非常に遅いです)?

  5. 要するに、これを修正する簡単な方法は何でしょうか?

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

ruby-on-rails - 自動期限切れキーによるロシア人形のフラグメント キャッシュ - パフォーマンスの長所と短所

質問は 2 つの記事に基づいています:
- Basecamp Next by DHH from 37signals
- Advanced Caching in Rails by Adam Hawkins

ロシアの人形のキャッシュを使用することのパフォーマンスへの影響について、私は少し混乱しています。具体的には:

  1. 自動期限切れキーを使用すると、すべてのリクエストがデータベースにアクセスしてオブジェクトのタイムスタンプを取得するように見えます - 何か不足していますか? (最良のシナリオでは、階層の最上位のキーに対してのみそれを行う必要があることを理解していますが、それでも...)

  2. 最初の記事では、todo リストとすべての todo アイテムをキャッシュしています。リストをキャッシュすることは、多くの作業 (すべてのアイテムの DB クエリ) を節約できるため、非常に理にかなっています。しかし、なぜ個々のアイテムをキャッシュするのでしょうか? アイテムのタイムスタンプを取得するために既にデータベースにアクセスしていますが、正確には何を保存しているのでしょうか? いくつかの html 行を生成していますか?

  3. 2 番目の記事で、Adam は次のようにビューのチャンクをキャッシュします: cache [post, 'main-content']... cache [post, 'comments'] コメントが追加されると、投稿のタイム スタンプが変更されるため、両方の全体が無効になります。ただし、main-content変更されていません-再生成したくありません!!! コメントのみを無効にするにはどうすればよいでしょうか。(これは実際には非常に一般的なユーザー ケースです。オブジェクト自体、さまざまな関連付け、他のストア内のデータなど、論理的に独立したいくつかの部分を持つモデルです。)

ロシア人形のキャッシングは、ネストされたオブジェクトの階層が深い場合にのみ意味があるように思えます (basecamp では、プロジェクト -> todos リスト -> todo -> items リストがあります)。ただし、階層が浅い場合は、無効化を自分で行う方がよいでしょう。

フィードバックをいただければ幸いです。
ありがとう。

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

ruby-on-rails-3 - rails3 caching: フラグメントを拡張子付きで期限切れにする

別のコントローラーからのファイル拡張子 (.json) を持つキャッシュ内のフラグメントを期限切れにするにはどうすればよいですか?

Rails 3.2.8 を使用しています。

/admin/books_controller と /api/books_controller という同じモデル用の 2 つのコントローラーがあります。管理者コントローラーはブックの作成/更新/削除に使用され、昇格されたアクセスが必要です。api/books_controller は、ユーザーが書籍に関する詳細を検索/一覧表示するために使用されます。api/books_controller をキャッシュしようとしました

これはうまくいきます。最初のリクエストは遅く、2 番目のリクエストは速い

ここで、Book が更新または破棄されたときにフラグメントを期限切れにする必要があります。私はこれを持っています:

ただし、これは同じフラグメントに解決されません(リクエストは現在、別のコントローラーへの HTML リクエストです)。

JSON リクエストを使用する API コントローラーは、次のフラグメントを読み書きします。

私の管理コントローラは、このフラグメントを期限切れにしようとします:

異なるリクエスト形式で他のコントローラから views/localhost:3000/api/books/4.json を期限切れにするにはどうすればよいですか?

この質問: rails 3 caching: expire action for named routeは、正規表現を使用して複数のフラグメントを期限切れにできることを示していますが、キャッシュ内のキーを列挙可能にする必要があります ( http://api.rubyonrails.org/classes/ActionController/Caching /Fragments.html#method-i-expire_fragment )