我想把缓存控制设置成一个更高的数字,而不是 "no-store",这是Django的默认值。
我可以用全局的方式来配置吗?
呃......我会小心这个问题。模板在每次请求时都会被处理。你不希望只是把它设置为随意缓存,数据可能会改变。
幸运的是,Django提供了缓存功能。我不知道它是否正确设置了无缓存,但它绝对可以防止不需要的重复查询。这就是你想要使用的东西。
你可以写一个自定义的中间件(未经测试,先从这样的东西开始,然后看看 文件). 对于一个提供相当静态信息的网站来说,它可以节省大量的网络资源,比如彩票结果或历史股票行情。
# 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或其他参数,然后试试。
在django 1.2中,有一种方法可以设置 "每个站点 "的缓存。
http:/docs.djangoproject.comen1.2topicscache#the-per-site-cache。
你看 泛白 包,如果你不想让nginxapache为你做这些工作。它自动对静态文件进行哈希处理,然后对静态文件进行最佳压缩和缓存设置。
如果你想在一个单独的,动态的视图中设置它(看起来不像你的情况,但也许对其他访问者来说)。
response = HttpResponse(template.render(context, request))
response['Cache-Control'] = f'max-age={60*60*24}'
return response