私はキャッシュ キーを制御するオプションを知りません。また、Django での実装では、そのようなオプションがあることは示唆されていません。キャッシュ ミドルウェアを介してリクエストのキャッシュ キーを生成するコードは、django.utils.cache.get_cache_key(キャッシュからフェッチする場所を知るため) およびlearn_cache_key(キャッシュを設定する場所を知るため) に存在します。次のように、ヘッダーを考慮しないようにこれらの関数にモンキー パッチを適用できます。
from django.utils import cache
from django.conf import settings
def get_path_cache_key(request, key_prefix=None):
if key_prefix is None:
key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
return cache._generate_cache_key(request, [], key_prefix)
# passing an empty headerlist so only request.path is taken into account
cache.get_cache_key = get_path_cache_key
cache.learn_cache_key = get_path_cache_key
これにより、内部的にパスの MD5 ハッシュが取得され、潜在的なプレフィックスが追加され、現在のロケール (言語) も考慮されます。さらに変更して、接頭辞と言語を省略できます。ドキュメントによると、memcached では 250 文字を超えるキーや空白を含むキーは許可されないため、ハッシュせずにプレーン パスを使用することはお勧めしません。get_path_cache_keyからも URL に適用し、get_absolute_url()そのページをクリアできるため、これは問題になりません。