#Django中提供了6种缓存方式: 开发调试 (开发调试使用) 内存(不做配置默认:默认配置是Django内置配置文件(用户不可见)设置在内存里面) 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) #Django的缓存到底存储在哪里是根据Django的 setings.py配置文件来决定的!
CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘,#缓存到内存 ‘LOCATION‘: ‘XXOO‘, #在内存中存储的变量(保证唯一) ‘TIMEOUT‘: 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期) ‘OPTIONS‘:{ ‘MAX_ENTRIES‘: 300, # 最大缓存个数(默认300) ‘CULL_FREQUENCY‘: 3, # 缓存到达最大个数之后,Django会自动清空3/1 ,设置为10 就剔除10/1 } } }
#如果把数据缓存至本地目录,和去数据库里获取数据有什么区别? 1、缓存的内容和数据库里不一样,文件中是经过模板渲染处理好的整体数据;而去数据库获取数据还需要模板渲染进行加工处理; 2、距离不一样,缓存到本地目录,而Django连接数据库需要socket;
CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.filebased.FileBasedCache‘, ‘LOCATION‘: ‘/var‘, #设置缓存文件的目录 } }
#优点:相对于缓存至文件,少了模板渲染
CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.db.DatabaseCache‘, ‘LOCATION‘: ‘my_cache_table‘, # 数据库表 } }
# 此缓存使用python-memcached模块连接memcache CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.memcached.MemcachedCache‘, ‘LOCATION‘: ‘127.0.0.1:11211‘, #通过网络socket连接,缓存到单台服务的 memcache数据库 } } CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.memcached.MemcachedCache‘, ‘LOCATION‘: ‘unix:/tmp/memcached.sock‘, #通过本地文件socket,缓存本机memcache数据库 } } #通过网络socket连接,缓存到memcache 集群 CACHES = { #其中 6和89为 ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.memcached.MemcachedCache‘, ‘LOCATION‘: [ (‘172.19.26.240:11211‘,6), (‘172.19.26.242:11211‘,89), ] } }
# 此缓存使用pylibmc模块连接memcache CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.memcached.PyLibMCCache‘, ‘LOCATION‘: ‘127.0.0.1:11211‘, } } CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.memcached.PyLibMCCache‘, ‘LOCATION‘: ‘/tmp/memcached.sock‘, } } CACHES = { ‘default‘: { ‘BACKEND‘: ‘django.core.cache.backends.memcached.PyLibMCCache‘, ‘LOCATION‘: [ ‘172.19.26.240:11211‘, ‘172.19.26.242:11211‘, ] } }
##只需要配置一个装饰器即可 from django.views.decorators.cache import cache_page #装饰器导入位置 import time from .models import * @cache_page(15) #超时时间为15秒 def index(request): t=time.time() #获取当前时间 bookList=Book.objects.all() return render(request,"index.html",locals())
#在中间件中配置,注意最上最下的顺序 MIDDLEWARE_CLASSES = ( ‘django.middleware.cache.UpdateCacheMiddleware‘, #最上‘django.middleware.cache.FetchFromCacheMiddleware‘, #最下 ) #缓存的时间,单位为秒 CACHE_MIDDLEWARE_SECONDS=10
原文:https://www.cnblogs.com/pdun/p/11262748.html