私のプロジェクトでは、次のようなキャッシュ設定があります。nginx_cache(60*60)(MyView.as_view())
関数はのキーを設定しmemcached
ますnginx./URI
Nginx は、キャッシュからページを返すか、アプリにリクエストを送信するかを決定する前に、memcached でそのキーを検索します。私が直面している問題は、キーのグループを無効にできるように、世代を持つキャッシュ キーを作成することです。
たとえば、私にとって理想的なキャッシュ キーは.... ですgroup_nameX:generationY:URL
。
Nginx は、Python アプリと通信せずに生成キーを把握する必要があります。
それは私に不自然なアイデアを残します.djangoを介して3つのキャッシュ値を設定します。
- アプリと通信せずにnginxが見つけられる方法でのグループ名
- その特定のグループ名の世代番号
- フル キャッシュ キー/出力 (html ページ)
LuaModule
nginx 側では、 andを利用する必要があると思いますMemc
。バニラ以外の nginx を使用したことがないので、避けるのが最善ですが、選択肢があるかどうかはわかりません。
http://wiki.nginx.org/HttpLuaModule#ngx.location.capture
http://wiki.nginx.org/NginxHttpMemcModule
Memc を使用してキーを取得する 2 つの内部ロケーション ディレクティブを設定する必要があります。
私の主な場所のディレクティブは...
$genkey set_by_lua
(内部の場所 get_key_name をキャプチャ)$gen_number set_by_lua
(内部ロケーション get_key_number_from_name を取得)$memcached_key "$genkey-$gen_number-$request_uri"
このキャッシング設定を簡素化する方法はありますか? 私が知らない一般的に受け入れられている方法はありますか?(おそらく - 私はこれを作っています!)