私は多くのエネルギー測定レコードをモデルに保存しています。処理されたデータをdjangoにキャッシュする
ユーザーは頻繁にエネルギー使用量レポートにアクセスする必要がありますので、model.managerは多くのレコードをクエリし、2秒間かかっているアルゴリズムを適用しています。しばらくするとキャッシュされたデータは利用できなくなりますが、ユーザーは同じレポートを表示することがよくあります。したがって、このパフォーマンス問題に対する私の潜在的な解決策は、 "ProcessedData"と呼ばれるモデルに処理されたデータ(クエリーセットだけでなく、アルゴリズムアプリケーションの後にデータクエリーセット)を格納することです。
エネルギーレポートへのアクセスが促された場合、課金されたマネージャは最初にProccessDataを照会し、ProccessData.objects.filter(field1='field1').exist()
:返されたデータは視覚化のために直接テンプレートに渡されます。必要なデータが以前に要求されていない場合、課金されたマネージャはアルゴリズムを適用し、要求をユーザに返す必要があります。
これは良いアプローチですか?
私は、入力として、私が知っている、クエリ、そのクエリの結果を使用してデータを処理しますjohny-cacheのmemcacheを使用すると、ユーザーに送信されたリクエストさえもキャッシュされますが、そのデータが12時間後に必要になったときに問題が発生します。その場合は、他のユーザーとのデータベースのやり取り量最初にキャッシュされた処理済データは使用できません。 – Jaime
django-cache-utilsの@cachedデコレータのようなものを試してみましたか?それを永久キャッシュを行わないカスタムキャッシュバックエンドと組み合わせてください(例えば、johnnyキャッシュはdjangoが "永遠"をサポートしないのでキャッシュを行います)。 –