缓存的定义与中间件和CSRF攻击
创始人
2025-05-30 10:49:41

缓存的定义

定义: 缓存是一类可以更快读取数据的介质统称,也指其他可以加快数据读取的存储方式。一般用来存储临时数据,常用介质的是读取速度很快的内存。 意义: 视图渲染有一定成本,数据库的频繁查询过高;所以对于低频的页面可以考虑使用缓存技术,减少实际渲染次数;用户拿到响应的时间成本会更低 缓存场景 1、博客列表 2、电商商品详情页 场景特点:缓存的地方,数据变动频率较少

Django中设置缓存 - 数据库缓存

CACHES={'default':{'BACKEND':'django.core.cache.backends.db.DatabaseCache','LOCATION':'my_cache_table',#自定义表'TIMEOUT':300,#缓存保存时间 单位秒,默认值为300'OPTIONS':{'MAX_ENTRIES':300,#缓存最大的数据条数'CULL_FREQUENCY':2, #缓存条数达到的最大值时 删除1/x的缓存数据  强行删除1/2的数据}}
}

Django中设置缓存 - 本地内存缓存

数据缓存到服务器中

配置样例:

CACHES = {
‘default’:{'BACKEND':'django.core.cache.backends.locmen.LocMemCache','LOCATION':'unique-snowflake'}
}

Django中设置缓存 - 文件系统缓存

将缓存存储到本地文件中

配置样例:

Django中使用缓存 - 视图函数中

样例

Django中使用缓存 - 路由中

样例: 缓存api的使用

浏览器缓存 - 强缓存

协商缓存

强缓存中的数据一旦过期,还需要跟服务器进行通信,从而获取最新数据; 思考?如果强缓存的数据是一些静态文件,大图片等; 解答: 考虑到大图片这类比较费带宽且不易变化的数据,强缓存时间到期后 浏览器会去跟服务器协商,当前缓存是否可用,如果可用,服务器不必返 回数据,浏览器继续使用原来缓存的数据,如果文件不可用,则返回最新数 据 1、Last-Modified响应头和 lf-Modified-Since请求头说明:
  • 1, Last-Modified为文件的最近修改时间,浏览器第—次请求静态文件时,服务器如果返回Last-Modified响应头,则代表该资源为需协商的缓存
  • 2,当缓存到期后,浏览器将获取到的Last-Modified值做为请求头lf-Modified-Since的值,与服务器发请求协商,服务端返回304响应码[响应体为空],代表缓存继续使用,200响应码代表缓存不可用[响应体为最新资源
2,ETag响 应头和If-None- Match请求头 说明: 1,Etag是服务器响应请求时,返回当前资源文件的一个唯一标识(由服务器生成),只要资源有变化,Etag就会重新生成; 2,缓存到期后,浏览器将ETag响应头的值做为If-None-Match请求头的值,给服务器发请求协商;服务器接到请求头后,比对文件标识,不一致则认为资源不可用,返回200响应码[响应体为最新资源1;可用则返回304响应码

中间件

中间件是Django请求/响应处理的钩子框架。它是十个轻量级的、低级的“插件”系统,用于全局改变Django的输入或输出。 中间件以类的形式体现每个中间件组件负责做一些特定的功能。例如, Django包含一个中.间件组件AuthenticationMiddleware,它使用会话将用户与请求关联起来。

编写中间件

中间件类须继承自django.utils.deprecation,MiddlewareMixin 类 中间件类须实现下列五个方法中的一个或多个: process_ request(self, request) 执行路由之前被调用,在每个请求上调用,返回None或ttpResponse对象  process_ view(self, request, callback, callback_ args, callback_ kwargs) 调用视图之前被调用,在每个请求上调用,返回None或HttpResponse对象 1、 process_ response(self, request, response) 所有响应返回浏览器被调用,在每个请求上调用,返回HttpResponse对象 2、 process_ exception(self, request, exception) 当处理过程中抛出异常时调用,返回一个HttpResponse对象 process_ template_ response(self, request, response) 在视图函数执行完毕且试图返回的对象中包含render方法时被调用;该方法需要返回实现了render方法的响应对象 注:中间件中的大多数方法在返回None时表示忽略当前操作进入下一项事件,当返回HttpResponese对象时表示此请求结束,直接返回给客户端 注册中间件 练习

数据进入django流程图


CSRF攻击

某些恶意网站上包含链接、表单按钮或者JavaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作这就是跨站请求伪造(CSRF,即Cross - Site Request Forgey)。

配置步骤

特殊说明 如果某个视图不需要django进行保护, 可以用装饰器关闭对此视图的检查 样例:

相关内容

热门资讯

长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
cad打印线条粗细设置 cad... 004-线型(下)打印样式设置和线型文件使用一、线宽设置方法制图规范里边的线宽要求,我们已经定义好,...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...