Веб-серверы сами по себе не выполняют кеширование.Решение о том, как работает кэширование на стороне сервера, решает само приложение.В случае с Django есть несколько вариантов включения кэширования.
Однако высокий уровень заключается в том, что Django видит запрос на URL, генерирует строку html в ответ и сохраняет эту строку в памятибаза данных - в зависимости от установленного бэкэнда кеша).В следующий раз, когда поступит запрос на этот же URL-адрес, Django проверит, находится ли этот ответ в кеше, и, если это так, вернет эту строку.Если этого не произойдет, процесс повторяется.
Идея создания декораторов @vary_on заключается в том, что вы изменяете ключи поиска для поиска ответа в кэше.Если вы меняете_он (пользователь, URL).алгоритм выглядит примерно так:
1. request /users/3/Josh
2. key = str(user) + str(url)
3. response = get_from_cache(key)
4. if response is None: response = view_function()
5. save_to_cache(key, response)
6. return response
Веб-сервер не имеет данных для этого типа кэширования.
Другой тип кэширования - на стороне клиента.Именно здесь веб-сервер настроен на возврат определенных заголовков для определенных типов ресурсов, таких как статический контент (JavaScript, изображения и т. Д.).Затем браузер может проанализировать эти заголовки и принять решение запросить контент или использовать контент, сохраненный на стороне клиента.Однако это обычно не относится к динамическому контенту.