問題タブ [dalli]
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 - ページネーション (kaminari) を使用する場合、dalli でフラグメント キャッシュを実装するにはどうすればよいですか?
(キャッシングdalli
)は静的ページのパフォーマンスを向上させる非常に強力なプラグインです。
しかし、頻繁に更新されるページネーションのある動的ページはどうでしょうか?
セットアップする正しい方法は何dalli
ですか?
たとえば、私が遭遇した1つの問題dalli
:ページネーションを使用するときに、異なるparams [:page]を同じページとして認識します:(
dalli
両方を使用する場合、システムをどのように設計しますか
- 頻繁に更新されるページ
- あまり更新しないページ
例えば。User
、Community
、Topic
、などの 4 つのモデルがあります。Comment(defined Polymorphic to both Community, and Topic. They can be created or shown in #show pages)
みたいな
- コミュニティ > (has_many) > トピック > (has_many) > コメント
- コミュニティ > (has_many) > コメント
- すべてユーザー(作成者)に属します
私の現在のコードはこのようなものです(これはかなり長いです。申し訳ありません)
キャッシュを使用するときにページネーションの問題に直面しています...
--------------------------------------設定------------ ----------------------------
config/environments/development.rb
ルート.rb
--------------------------------------コミュニティ------------ ----------------------------
controllers/communities_controller.rb#index&show
views/communities/index.html.erb 注: ただし、次の params[:page]:( キャッシングは別のページを同じコンテンツとして認識しているようです...
ビュー/コミュニティ/show.html.erb
models/community_sweeper.rb
--------------------------------------トピック------------ ----------------------------
controllers/topics_controller.rb#index&show
ビュー/トピック/index.html.erb
ビュー/トピック/show.html.erb
models/topic_sweeper.rb
--------------------------------------コメント------------ ----------------------------
models/comment_sweeper.rb
ruby-on-rails - Rails 2セッションは、変数が保存された後、しばらくの間破壊されました
私は既存の Rails 2 アプリに取り組んでいます。いくつかのハッシュ データ構造をオブジェクトに変換しました。1 つをセッション ストアに配置すると、セッションが破壊され、user_id が消去され、別のログインが強制されるようです。セッションに dalli_store を使用しています。
次のコードにより、セッションが消去されます。
それがどこで一掃されているのかは明らかではありません。デバッガーでビューのレンダリングの最後までステップスルーでき、セッションは問題ありませんが、UI で別のリンクをクリックすると、session
空 (Hash[0]) になり、ログイン ページにリダイレクトされます。
これにコードを少し変更すると、セッションは問題ありません。
ただし、実際のオブジェクト (ディープ コピーであっても) を保存すると、セッションが失われます。つまり、これでも機能しません:
マーシャリング時の bug.size は約 140K であるため、memcached をオーバーランすることはありません。いずれにせよ、セッションは によってシリアル化されていると想定するMarshal::dump()
ので、サイズは同じである必要があります。オブジェクトを保存した後、セッションでオブジェクトにアクセスしてもかまいません。セッションに入れるだけで問題が発生しますが、前述したように、セッションはオブジェクトを保存した後も、ビューのレンダリング中も問題ありません。次のリクエストが開始されるまで、それが破壊されたことに気付きません。
私は困惑しています。
これをデバッグする方法に関する推奨事項はありますか? 現時点では、オブジェクトを保存するために Marshal を明示的に呼び出すことができると思いますが、セッションが破壊されている理由を本当に理解したいと思います。
大きなオブジェクトをセッションに入れるのは悪いことだとわかっていますが、問題のその部分を修正することは、現在のプロジェクトの範囲外です...おそらく後で。さらに、私はここで何が起こっているのか非常に興味があります。
ruby-on-rails-3 - DalliError: 利用可能なサーバーはありませんが、フラグメントの書き込み/読み取りがまだ行われています
サーバーで production.log をチェックしていたところ、コードがキャッシュを読み書きしていると疑われるたびに次の行が表示されます。
なぜ、そしてそれは私が心配する必要があるのですか?dalli (2.6.2)、cache_digests (0.2.0)、rails (3.2.11)、memcached (1.4.2) を使用しています。
memcached をインストールしたときに、たまたま sudo を使用しました。
ruby-on-rails-3 - Dali::Client を初期化する場所
メモリ キャッシングに Dalli gem を使い始めたところです。
キャッシュからデータを取得したい場合、または再利用できるシングルトンを宣言できる場合、すべてのリクエストで Dalli::Client のインスタンスを作成する必要があるのでしょうか?
ruby-on-rails - ActiveRecord::Relationとして生成されたRailsキャッシュキー
(Dalli / Memcachedストアを使用して)フラグメントキャッシュを生成しようとしていますが、キーの一部として「#」を使用してキーが生成されているため、Railsはキャッシュ値があることを認識していないようで、ヒットしていますデータベース。
ビューのキャッシュキーは次のようになります。
コントローラには次のものがあります。
次のような実際のActiveRecordクエリを使用します。
Railsサーバーを見ると、キャッシュが読み取られているのがわかりますが、SQLクエリは引き続き実行されます。
私が間違っているかもしれないことについて何か考えはありますか?キーの生成とActiveRecord::Relationshipを使用する必要があると確信していますが、その方法はわかりません。
ruby-on-rails - IDでオブジェクトを検索するキャッシュはどのように行われますか
特定のIDで常にselect呼び出しが行われているのを観察するため、idでオブジェクトの検索をキャッシュする方法。将来的に任意のキャッシュストア(memcachedまたはredisなど)を切り替えることができるように、目立たない方法でレールでこれを有効にするにはどうすればよいですか?
編集:
org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE
JavaEEのすべてのエンティティクラスに適用されるHibernateベースのキャッシング戦略とよく似て います。
ruby-on-rails - DC.flush_all を呼び出すと、Passenger を使用している場合もキャッシュ全体がクリアされますか?
Phusion パッセンジャーと memcached (Dalli Gem) を使用しています。完全なキャッシュをクリアしたい (telnet localhost 11211 を実行してから、telnet コマンドで flush_all を実行するのと同様)。
保存して実行しますか:
分岐したPhusionパッセンジャーセットアップで?
ruby-on-rails - Railsキャッシュの取得を特定のオブジェクトIDに固有にする方法
bar_id = 1 の場合、最初のアクセスでキャッシュが形成されます。ただし、後で bar_id が 2 に変更されても、値 1 は保持されます。bar_id を超えて機能させるにはどうすればよいですか
ruby-on-rails - memcached localhost / aws with rails
私はレールを使用しており、搬送波プラグインを介して AWS に画像をアップロードしています。memcached/dalli で画像のキャッシュを開始しましたが、しばらくは正常に動作します...しかし、しばらくするとすべての画像が壊れて表示されます (約 20 ~ 30 分、または別のブラウザーを使用している場合)。
例を次に示します...この一連の画像をキャッシュします。ここで、post.avatar_url は画像の AWS URL です。画像は通常、キャッシュなしで問題なくロードされます...しかし、キャッシュすると最終的に画像が破損するようです。
画像が壊れる原因は何ですか?
ありがとうございました!