django的缓存机制
django的缓存机制
缓存在哪?
文件缓存
数据库缓存
缓存的位置配置
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', #指定缓存使用的引擎 'LOCATION': 'D:\django_cache', #指定缓存的路径 'TIMEOUT':300, #缓存超时时间(默认为300秒,None表示永不过期) 'OPTIONS':{ 'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300) 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) } } }
缓存的粒度: 也就是 缓存单个页面,缓存所有,缓存页面的某个地方
缓存单个页面也就是在视图函数上加个装饰器
from django.views.decorators.cache import cache_page @cache_page(5) #5s后才会变 def test_cache(request): p = Person('egon',18) cache.set('obj',p) ctime = time.time() return render(request,'index.html',context={'ctime':ctime})
页面局部缓存 在html页面时
{ % load cache %}
{% cache 5 ‘name’} #‘name’ 也就是理解成取名字 如果在其他部位也要缓存,不撞名字就行
写上要缓存的内容就行
{% endcache %}
全站缓存 需要在中间件上配两个中间件 一个重写 process_response 一个重写 process_request方法 ,在settings文件中配置即可
'django.middleware.cache.UpdateCacheMiddleware', #全站缓存 重写response 放在第一个 'django.middleware.cache.FetchFromCacheMiddleware', #重写request 全站缓存 放在最后一个 请求走的时候是从下往上走,所以它要放在最下面 而response放在第一个
CACHE_MIDDLEWARE_SECONDS = 5 #缓存时间
前后端分离缓存的使用 先举个例子就是 访问a页面可以实例化得到一个对象,而访问b页面时可以直接拿到这个缓存的对象并不需要重新生成
from django.core.cache import cache #视图1 obj = Person(*args,**kwargs) cache('obj',obj) #视图2 obj = cache.get('obj') #可以直接拿到视图一中的obj对象
浙公网安备 33010602011771号