問題タブ [django-cache]
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.
django - Django でキャッシングを機能させる
Django でキャッシングを実装しようとしています。memcache、ファイル システム キャッシング、およびローカル メモリ キャッシングを試しました。何が機能していないかに関係なく、キャッシングをテストするためにテンプレートに付けたタイムスタンプは常に更新されているため、機能していないことがわかります.
コードの関連部分を次に示します。
VIEWS.PY
django - クエリの逆外部キー オブジェクトで prefetch_related を使用すると、Django QuerySet キャッシュが設定されない
これが django のバグなのか、間違った角度からアプローチしているのかはわかりません。
すべての「サイト」モデル オブジェクトだけでなく、外部キーを介してサイト モデル オブジェクトに関連付けられている他のモデル オブジェクトも戻すクエリを実行する必要があります。
これを行うには、次を実行します。
これは素晴らしいことです。単一のクエリで、各サイトに関連するすべてのタンク、ターミナル、およびステータス オブジェクトが返されます。私の問題は、このクエリセットをキャッシュしようとすると (したがって、ユーザーは他のルックアップを実行する必要なく、このクエリセットを XLS/CSV でダウンロードできるようになります)、キャッシュは常に [なし] に設定されます (つまり、設定されません)。 .
これは、サイトに関連するモデル名 (逆 FK) を渡す場合にのみ発生します。サイトが関連するモデル名を渡すか、 prefetch_related 呼び出しを削除すると、キャッシュが正常に設定されます。ただし、これを行うと、クエリセットが評価されるときにデータベースが少なくとも 100 回ヒットします。
つまり、一言で言えば、問題は、クエリセットで prefetch_related を使用して逆 FK ルックアップを取得すると、そのクエリセットのキャッシュが失敗することです。さらに、クエリセット (例: company.site_set.filter(...)) で _set を実行すると、これも失敗します。
サイト モデルにリンクするオブジェクトの直接参照がないことと関係があると思いますが、すべての基礎となるメカニズムを理解することは役に立ちます。
誰かがこれに光を当てることができますか? 私は本番環境で memcached を使用しています。
python - キャッシュキーが正しく生成されるのはどの時点ですか
ドキュメントによると、KEY_PREFIX
サーバー間でキャッシュインスタンスを共有するときに使用する必要があると効果的に述べています。私の質問は、KEY_PREFIX が適用されるのはいつですか? ここでMemcachedStatsを使用するのは基本的な例です
この時点で問題ないように見えます-つまり、プレフィックスが設定されているか、そう思います..
現時点では、これは単なるバグですか?