django支持整站缓存,也叫站点级缓存
 
指定CACHE_BACKEND,缓存整个网站,也就是所有不包含GET,POST参数的页面在第一次被请求之后就自动被缓存指定时间(timeout决定)

 
激活站点缓存
修改settings.py,MIDDLEWARE_CLASSES中添加
  django.middleware.cache.UpdateCacheMiddleware
  django.middleware.cache.FetchFromCacheMiddleware

如下所示
 
注意添加位置 MIDDLEWARE_CLASSES对添加位置有要求,Update行必须在第一行,Fetch行必须在最后一行,更多顺序规则请参看https://docs.djangoproject.com/en/1.4/topics/cache/#order-of-middleware-classes
   
MIDDLEWARE_CLASSES = (
     'django.middleware.cache.UpdateCacheMiddleware',
     'django.middleware.common.CommonMiddleware'
     'django.middleware.cache.FetchFromCacheMiddleware',
)

在settings.py中添加如下缓存配置项
CACHE_MIDDLEWARE_ALIAS            #缓存别名
CACHE_MIDDLEWARE_SECONDS        #缓存时间
CACHE_MIDDLEWARE_KEY_PREFIX    #缓存前缀,区别公用一个django环境的其他站点
 
如果CACHE_MIDDLEWARE_ANONYMOUS_ONLY 被设置为true,则只有匿名请求页面被缓存
使用CACHE_MIDDLEWARE_ANONYMOUS_ONLY 注意需要激活AuthenticationMiddleware,也就是在你的配置文件MIDDLEWARE_CLASSES 的地方, AuthenticationMiddleware 必须出现在 CacheMiddleware 前面
 
MIDDLEWARE自动在httpresponse完成的工作
设置Last-Modified
设置Expires
设置Cache-Control
 
Middleware设置的过期时间可以通过修饰器方式修改,或者页面使用自己的缓存设置,如有一个max-age在Cache-Control中设置
django.views.decorators.cache    使用cache_control设置过期时间或者使用never_cache取消缓存
 

 

标签: ,
本文连接地址: http://www.fresker.com/old2/archives/564 (转载注明出处)

回复

目前暂无评论

Sorry, 评论已关闭.