我想将缓存控制设置为更高的数字,而不是“no-store”,这是django的默认设置。
我可以用某种全球性的方式配置它吗?
答案 0 :(得分:12)
您可以编写自定义中间件(未经测试,从这样的内容开始,然后查看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或任何其他参数并试一试。
答案 1 :(得分:1)
谢天谢地,Django提供了缓存。我不确定它是否正确设置了无缓存,但它肯定会阻止不需要的重复查询。这就是你想要使用的。
答案 2 :(得分:0)
有一种方法可以使用django 1.2
设置“每个站点”缓存http://docs.djangoproject.com/en/1.2/topics/cache/#the-per-site-cache
答案 3 :(得分:0)
如果您不想让nginx / apache为您完成工作,请查看whitenoise软件包。它会自动对静态文件进行哈希处理,然后在您的静态文件上设置最佳压缩和缓存设置。
如果要在单个动态视图中进行设置(看起来不像您的情况,但可能适合其他访问者):
response = HttpResponse(template.render(context, request))
response['Cache-Control'] = f'max-age={60*60*24}'
return response