Django アプリケーションと postgres バックエンドがあります。基本的には、大規模なデータベースを備えた検索サイトであり、データは通常 1 日に 1 回変更されます。データベースの負荷を軽減するために、キャッシングを開始したいと考えています。
memcached をセットアップしましたが、ビューには次のアーキテクチャがあり、アプリがフロントエンドで Ajax を使用できるように設計されています。
@cache_page(60 * 60 * 12)
def items(request, pattern=None, specialurl=None):
if request.is_ajax():
template = "result_ajax.html"
else:
template = "index.html"
残念ながら、キャッシングと Ajax 呼び出しの特別な処理の組み合わせはうまく機能しません。
これは、memcached が Ajax の結果と非 Ajax の結果を区別しないためです。したがって、フロントエンドからの Ajax 呼び出しにはキャッシュされた非 Ajax の結果が与えられ、その逆も同様です。
だから私がする必要があるのは、他にどのようにキャッシュするかを理解することです。次のオプションを考えることができます。
- 一度に最大 1 日間、データベース クエリのみをキャッシュします。これは可能ですか?
result_ajax.html
実際に結果を表示するテンプレートのフラグメントをキャッシュします。(index.html
実際に含まれresult_ajax.html
ます。)
これらのうち、物事を行うための最良の方法はどれですか?