为什么要做django缓存?
在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面。
这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了。
缓存就是为了防止重复计算,把那些消耗了大量资源的结果保存起来,下次访问时就不用再次计算。
Django缓存系统:
Django提供了自己的缓存系统,可以自己保存动态网页,为了避免在需要的时候重新计算。
Django缓存架构可以缓存:特定视图的输出,模板的一部分,整个网站。
在Django项目中使用缓存:
在数据库中设置缓存:
配置项目的settings.py文件,添加代码:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_table_name',
}
}
创建缓存表
python manage.py createcachetable
在文件系统中设置缓存:
配置项目的settings.py文件,添加代码:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
'LOCATION': '/var/tmp/django_cache',
}
}
在本地内存中设置缓存:
配置项目的settings.py文件,添加代码:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake'
}
}
缓存整个网站:
缓存整个网站可以通过编辑项目settings.py的MIDDLEWARE_CLASSES选项来完成,注意顺序,先更新,再获取。
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
还有一些通用设置:
CACHE_MIDDLEWARE_ALIAS = 'default' #用来存储的缓存别名
CACHE_MIDDLEWARE_SECONDS = 0 #所有页面默认缓存时间,默认600
CACHE_MIDDLEWARE_KEY_PREFIX ='www.demo.com' #关键的前缀,当多个站点使用同一个配置的时候,
这个可以设置可以避免发生冲突,一般设置为网站域名
CACHE_MIDDLEWARE_ANONYMOUS_ONLY = False #那么只有匿名的请求会被缓存,这是一个禁用缓存非匿
名用户页面的最简单的做法,注意确保已经启用了Django用户认证中间件