django是动态网页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染,将字符串返回给用户,用户会看到相应的html页面。但是如果每次请求都从数据库中请求并获取数据,并且当用户并发量十分大的时候,这将服务器性能将大大受到影响。因此使用缓存能有效的解决这类问题。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验。
<强>缓存的适合场景强>
对页面实时性要求不高的页面。对于大多数的购物网站,短期内商品的描述是没有变化的,可以使用缓存。
<强>缓存优先级强>
由django的生命周期知各级缓存的优先级:中间件应用的全局缓存祝辞视图函数缓存祝辞模板渲染下的局部视图使用缓存。
Django缓存模式的使用(主要针对RestFul设计模式的项目)
全站使用缓存模式(整个项目每个接口都会使用缓存,缺点:所以接口都无法实时性获取数据)单独视图缓存模式(单个接口使用缓存)局部视图缓存模式
<强>第一种:实现方式:强>
必须在设置中设置缓存中间件
中间件=[ “django.middleware.cache.UpdateCacheMiddleware”, …其他中间件…… “django.middleware.cache.FetchFromCacheMiddleware”, )
但是伴随的缺点就是没有设置缓存的接口默认都会有600秒的缓存,如下
无论清缓存还是换浏览器,因为缓存都是放在服务端的。
这就导致那些不需要设置缓存,要求数据实时性较高的接口无法及时返回最新数据。
所以:
如果需要使用
从进口cache_page django.views.decorators.cache cache_control 从django.views.decorators.vary进口vary_on_headers >之前@cache_control、@vary_on_headers @vary_on_cookie
这些装饰器,就必须需要缓存中间件,但是这样会导致其他接口都会有缓存600秒,需要慎重考虑使用
<强>第二种:强>
从django.views.decorators.cache进口cache_page @cache_page (10) def cac(请求): .......这种方式只针对一个接口使用缓存(个人倾向于使用此方式)
<强>第三种:强>
涉及到模板的使用(具体没有研究过):
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
浅谈django三种缓存模式的使用及注意点