django cache middleware
"""
缓存中间件。如果可能,每一个django页面将会基于URL缓存,这种能够缓存中间件的方法设置为updatedCacheMiddleware为第一个中间件,FetchFromCacheMiddleware为最后一个
MIDDLEWARE =
[ 'django.middleware.cache.UpdateCacheMiddleware',
...
'django.middleware.cache.FetchFromCacheMiddleware'
]
在响应阶段,UpdateCacheMiddleware需要最后执行,处理中间件需要自顶向上,在请求阶段,FetchFromCacheMiddleware需要最后执行,处理中间件自定向上
简单的类CacheMiddleware被一些简单的网站使用,然而,如果任何其他的一个缓存中间件需要影响缓存键,你将需要两部分UpdateCacheMiddleware`` 和
``FetchFromCacheMiddleware`,当你使用djanog的LocaleMiddleware这个经常发生。
"""
from django.conf import settings
from django.core.cache import DEFAULT_CACHE_ALIAS, caches
from django.utils.cache import (
get_cache_key, get_max_age, has_vary_header, learn_cache_key,
patch_response_headers,
)
from django.utils.deprecation import MiddlewareMixin
class UpdateCacheMiddleware(MiddlewareMixin):
""" 如果响应被缓存,响应阶段的缓存中间件更新,两部分更新和抓取缓存中间件必须有一部分被使用。
UpdateCacheMiddleware在MIDDLEWARE中必须成为中间件的第一部分
在响应阶段它必须最后被获得"""
def __init__(self, get_response=None):
self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
self.cache_alias &#