在Django中,如何为每个模板渲染自动设置“缓存控制”?
问题描述:
我想将缓存控件设置为更高的数字,而不是“no-store”,这是django的默认设置。在Django中,如何为每个模板渲染自动设置“缓存控制”?
我可以用一种有点全球性的方式来配置它吗?
答
呃...我会仔细考虑这点。每个请求都会处理该模板。你不想仅仅将它设置为缓存,数据可以(也可能会)改变。
谢天谢地,Django提供了缓存。我不确定它是否正确设置了no-cache,但它肯定会防止不需要的重复查询。这是你想要使用的。
答
你可以写一个自定义的中间件(未经测试,像这样的东西开始,并期待在docs)。例如,它可以为网站提供很多网络资源,从而提供非常静态的信息,例如抽奖结果或历史股票报价。
# my_middleware.py
from django.conf import settings
# default 30 days
MAX_AGE = getattr(settings, 'CACHE_CONTROL_MAX_AGE', 2592000)
class MaxAgeMiddleware(object):
def process_response(self, request, response):
response['Cache-Control'] = 'max-age=%d' % MAX_AGE
return response
在settings.py中附加你的中间件MIDDLEWARE_CLASSES;中间件就像洋葱层 - 顺序很重要,在响应阶段,最先处理的是第一个。
设置CACHE_CONTROL_MAX_AGE或任何其他参数,试试看。