Какой алгоритм хеширования по умолчанию используется в кеше Django? - PullRequest
0 голосов
/ 27 июня 2019

Я использую кеширование в Django.Мой кеш - это кеш django-redis:

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

Я использую кеш на основе представления:

@cache_page(timeout=60 * 10)
def my_view(request: Request):
  # my view stuff

Я хотел бы знать, какой алгоритм использует Django для созданияключ?Документы просто говорят, что это сделано из URL и заголовков.Но я хотел бы знать специфику или еще лучше код, который его генерирует.Но в документации нет этой информации.

Итак, как Django получает ключи для кэшей на основе представлений?

1 Ответ

0 голосов
/ 27 июня 2019

Нашел!

https://docs.djangoproject.com/en/2.2/_modules/django/utils/cache/

То, что вы ищете, это метод _generate_cache_header_key.Вот как это выглядит при написании этого ответа:

def _generate_cache_header_key(key_prefix, request):
    """Return a cache key for the header cache."""
    url = hashlib.md5(force_bytes(iri_to_uri(request.build_absolute_uri())))
    cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
        key_prefix, url.hexdigest())
    return _i18n_cache_key_suffix(request, cache_key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...