通常,计算值是昂贵的(即资源匮乏和缓慢),因此将值保存到可快速访问的缓存中可以有巨大的好处,为下一次需要做好准备。
这是一个足够重要和强大的技术,Django包括一个综合的缓存框架,以及其他较小的缓存功能。
django是动态网页,一般来说需要实时的生成访问的页面,展示给访问者,这样,内容可以随时变化,也就说请求到达视图函数之后,然后进行模板渲染,将字符串返回给用户,用户会看到相应的html页面。但是如果每次请求都从数据库中请求并获取数据,并且当用户并发量十分大的时候,这将服务器性能将大大受到影响。因此使用缓存能有效的解决这类问题。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数据和渲染的时间,不仅能大大提高系统性能,还能提高用户体验。
缓存的适合场景
对页面实时性要求不高的页面。对于大多数的购物网站,短期内商品的描述是没有变化的,可以使用缓存。
缓存优先级
由django的生命周期知各级缓存的优先级:中间件应用的全局缓存>视图函数缓存>模板渲染下的局部视图使用缓存。
局部视图 使用
在模板的顶端附近加入{% load cache %}以通知模板存取缓存标签。
模板标签{% cache %}在给定的时间内缓存了块的内容。 它至少需要两个参数: 缓存超时时间(以秒计)和指定缓存片段的名称。
{#局部缓存 静态数据缓存#} {% load cache %} {#引入TemplateTage#} <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>cache</title> </head> <body> {# 小力度细致缓存#} {% cache 5 c1 %} {#两个参数: 缓存超时时间(以秒计)和指定缓存片段的名称。 #} .. sidebar .. {% endcache %} </body> </html>
单独视图缓存 使用
from django.views.decorators.cache import cache_page @cache_page(10) #参数为缓存失效时间 def cache(request): pass
全局缓存 配置
MIDDLEWARE = [ 'django.middleware.cache.UpdateMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.FrameOptionsMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', ]
'django.middleware.cache.UpdateMiddleware',
服务端响应response时作用 查看是否有缓存,如果没有则写入缓存,否则直接返回给客户端
'django.middleware.cache.FetchFormCacheMiddleware',
客户端请求request时作用 查看是否有缓存,如果有不经过views直接返回,否则进入views视图执行函数获取缓存
客户端第一次发出请求是通常是没有缓存的,
因此request请求由中间件FetchForm经过检查没有缓存后进入views,
然后response携带缓存到中间件Update后写入缓存,再返回给客户端。
伴沃教育还为您提供以下相关内容希望对您有帮助:
如何在django中使用redis做缓存服务器
和单个view缓存 站点缓存:settings.py MIDDLEWARE = [ # 站点缓存 , 注意必须在第一个位置 'django.middleware.cache.UpdateCacheMiddleware', ... # 站点缓存, 注意必须在最后一个位置 'django.middleware.cache.FetchFromCacheMiddleware',]视图缓存:views.py from django.shortcuts ...
如何为SAE Django工程设置全站Memcached缓存
1 在服务管理->Memcache中初始化Memcache服务,并分配合适的容量。2 修改settings.py,添加配置:3 一段时间后,即可在SAE服务管理—Memcache中观察缓存命中率和内存使用情况
踢足球的英文
play football
用Django开发web后端,真的比SpringBoot要省事吗?
1、用于创建模型的对象关系映射。2、为最终用户设计较好的管理界面。3、URL 设计。4、设计者友好的模板语言。5、缓存系统。Django(发音:[`dʒæŋɡəʊ]) 是用python语言写的开源web开发框架(open source web framework),它鼓励快速开发,并遵循MVC设计。Django遵守BSD版权...
django redis-cache服务重启后,缓存还在吗
还在,这个存储在redis里面,redis本身带持久化机制,正常的服务器重启对这个没有影响,除非你的redis 碰到突然crash这类的问题,可能会影响短时间内的数据正常。
django 制作web网站,动态页面数据已更新,但是无法刷新,这是怎么回事...
首先,如果现在成功返回的注册成功信息,你点击了F5或浏览器上的刷新,浏览器会默认再发一次请求,这时会问你是否继续提交,如果你点了继续提交,那么你之前的注册信息会再次被提交,如果后台不去验证唯一性,那么会出现两条相同的记录。其次,假设不是上面所说的再次post提交,你直接浏览器输入你的这个...
全栈开发都包含哪些技术
运用开发框架和第三方库 —— 流行的开发语言,一般都伴有出色的开发框架,比如Java的Spring、MyBatis、Hibernate,Python的Django,PHP的 thinkphp、yin,nodeJs的 express 等等。这些开发框架往往都遵循软件开发领域的一些最佳实践,并由非常优秀的开发人员创建。熟练使用这些开发框架或第三方库能够避免重复...
Ph学习路线图大学生必看
6)Vue框架:框架的使用以及注意点 04Web开发 学习目标 能够熟练使用Flask和Diango框架进行web服务的开发。 学习重点: 1)Flaskweb框架的使用 模板与表单、数据库的使用、单元测试、第三方扩 展与云服务器的使部署、Redis缓存使用、GIT版本控 制、用、验证码的收发、网站项目开发实战 2)Djangoweb框架的使用框架的使用...
Python都是学什么?
Web请求生命周期、自行开发简单的Web框架、MTV\MVC框架介绍、Django框架使用、路由系统、模板引擎、FBV\CBV视图、Models ORM、FORM、表单验证、Django session & cookie、CSRF验证、XSS、中间件、分页、自定义tags、Django Admin、cache系统、信号、message、自定义用户认证、Memcached、redis缓存学习、RabbitMQ...
如何在windows下安装reviewboard
使用patch-2.5.9-7-setup.exe进行安装。建议安装在C:\GnuWin32目录。安装完之后,将bin目录,添加到系统的环境变量当中(注意是系统环境变量,不是个人环境变量)。 安装memcached工具,该工具用于在reviewboard过程中进行数据缓存处理。使用memcached-1.2.6-win32-bin.zip,将其解压在c:\目录下,并...