接口测试开发之:一篇搞懂 Cache、Cookie及Session的爱恨情仇

简介: 接口测试开发之:一篇搞懂 Cache、Cookie及Session的爱恨情仇

1、引言


这刚刚整理完公司内部技术分享的PPT,看看时间,又已经是凌晨…

喝一杯美咖,提提神,

反正都已经这个时间了,索性,就直接开始写博客吧。

因为最近总是被某些大佬艾特,说我这2月份更新的博文不地道了…

我也是哑巴吃黄连啊~~~


因为最近在给一些同学讲解接口的事情,

本以为 Cookie、Cache及Session这些知识,都是逢考必过的内容,然鹅,又是我想多了。


为了能让我可以多想点,今天就分享这三点姿势!!


2、Cache


关于缓存,我看了网上的一些教程讲解,几个字概括:


太繁琐,太啰嗦,长篇大论


为了能让大家更容易理解,小鱼我以文字+流程图的形式来分享。


首先,针对接口测试,Cache主要分为三类:

浏览器缓存

代理缓存

网关缓存


2.1 缓存定义

2.1.1 缓存概念

概念


使用缓存Cache的站点会监听客户端向服务器端发出的请求,并根据相应的缓存设置保存服务器端反馈的数据,如HTML页面,图片等文件。


如果用户再次使用相同的URL发送请求,请求不会直接发向服务器,而是通过缓存策略现行判断是否能够使用之前已经保存下来的反馈文件,从而降低服务器的负载及提高数据的响应时间。


2.1.2 缓存优点

优点

一个优秀的缓存策略可以为网络传输带来以下两方面的好处:


减少延迟:因为所发出的网页请求是指向更接近客户端的缓存,而不再是源服务器端,因为请求所花费时间更短,这让网站看上去反应更快,提高了用户体验。

降低网络负荷:因为缓存文件可以重复使用,节省不少的带宽,降低了网络负荷。同时站在用户的角度,这也节省了不少流量.

妈妈再也不担心我的流量不够用了


2.2 浏览器缓存

2.2.1 存储路径

存储路径:

将浏览过得网页全部内容保存到本地计算机的硬盘中


2.2.2 缓存优点

优点:


减少延迟:因为所发出的网页请求是指向更接近客户端的缓存,而不再是源服务器端,因为请求所花费时间更短,这让网站看上去反应更快,提高了用户体验。

降低网络负荷:因为缓存文件可以重复使用,节省不少的带宽,降低了网络负荷。同时站在用户的角度,这也节省了不少流量.

妈妈再也不担心我的流量不够用了


2.2.3 缓存弊端

弊端

由于客户端内存的限制,不能存放过多的数据,否则会降低本机的性能。


2.2.4 原理图

原理流程图


image.png

2.3 代理缓存

2.3.1 原理

原理

代理缓存既不属于客户端,也不属于服务器端,而是利用网络路由器请求信息。


2.3.2 应用场景

应用场景


用户手动设置浏览器代理

使用网页代理

网页代理将请求的URL通过他潜在网络定向到代理,所以用户无需手动配置。


2.3.3 原理图

原理流程图

image.png


2.4 网关缓存

2.4.1 原理

原理

网关缓存也是中间人,但不是由系统网络管理员出于节省带宽而部署,他们通常是由于网站站长自己部署的,这样可以让自己的网站更具有扩展性,可靠性和性能更好。


可以通过许多方法将请求路由到网关高速缓存,他就类似于负载平衡器。


2.4.2 缓存分类

缓存分类


强缓存:直接从本地缓存中取资源,不会和服务器通信

协商缓存:通过服务器来告知是否能用本地缓存。先和服务器通信,在从本地缓存中去;如果不可以使用本地缓存,就会返回最新的资源。


2.4.3 缓存与协议流程图


强缓存与协商缓存图


image.png

2.4.4 缓存原理图

原理流程图


image.png

3、Cookie


3.1 原理

1、 用户会提供包括用户名称在内的订单信息并且将其提交到服务器;

2、服务器向客户端回传相应的数据的同时,也会发送这些信息;


3、当客户端接收到来自服务器的响应之后,浏览器会将Cookie存放在一个统一的位置;


4、客户端再向服务器发送请求的时候,会把Cookie再次发回至服务器。


3.2 通行证

通行证解析


Cookie的内容是保存的一小段文本信息,这些文本信息组成一份通行证。

它是客户端对于无状态协议的一种解决方案。


3.3 原理图

原理流程图

image.png



4、Session


4.1 传输步骤

1、 服务器端程序运行过程中创建Session,并为该Session生成唯一的Session ID


2、服务器将该Session ID 发送到客户端


3、当客户再次发送请求的时候,就会把这个Session ID都带上


4、当服务器接收到请求之后就会依据Session ID找相应的Session,完成请求响应


4.2 原理图

原理流程图

image.png

5. Session 与Cookie区别


1.存储位置不同


Cookie:存放在客户端浏览器上;

Session:存放在服务器上。


2. 存储方式不同


Cookie:只能保管ASCII字符串,需要通过编码的方式存取Unicode字符或者二进制数据。运用Cookie难以实现存储略微复杂的信息。

Session:存取任何类型的数据。


3. 有效期不同


Cookie:设置其属性,长期有效

Session:关闭窗口,自动失效


4. 存储容量不同


Cookie:单个数据≤4KB,一个站点最多保存20个Cookie

Session:没有上限,但是出于对服务器的性能考虑,Session内不要存放过多的东西,并且设置Session删除机制。


5. 隐私策略不同


Cookie:对客户端是可见

Session:存储服务器,对用户透明


6. 服务器压力不同


Cookie:保存在客户端,所以不占用服务器资源

Session:保存在服务器端,所以会消耗大量内存


7.跨域支持不同


Cookie:支持跨域名访问。

Session:不支持跨域名访问。Session仅在它所在的域名内有效。


目录
相关文章
|
2月前
|
存储 前端开发 Java
【SpringMVC】——Cookie和Session机制
获取URL中参数@PathVarible,上传文件@RequestPart,HttpServerlet(getCookies()方法,getAttribute方法,setAttribute方法,)HttpSession(getAttribute方法),@SessionAttribute
|
3月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
107 4
|
3月前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
4月前
|
缓存 Java Spring
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
文章比较了在Servlet和Spring Boot中获取Cookie、Session和Header的方法,并提供了相应的代码实例,展示了两种方式在实际应用中的异同。
283 3
servlet和SpringBoot两种方式分别获取Cookie和Session方式比较(带源码) —— 图文并茂 两种方式获取Header
|
4月前
|
存储 安全 数据安全/隐私保护
Cookie 和 Session 的区别及使用 Session 进行身份验证的方法
【10月更文挑战第12天】总之,Cookie 和 Session 各有特点,在不同的场景中发挥着不同的作用。使用 Session 进行身份验证是常见的做法,通过合理的设计和管理,可以确保用户身份的安全和可靠验证。
78 1
|
5月前
|
存储 缓存 数据处理
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
本文介绍了PHP会话控制及Web常用的预定义变量,包括`$_REQUEST`、`$_SERVER`、`$_COOKIE`和`$_SESSION`的用法和示例。涵盖了cookie的创建、使用、删除以及session的工作原理和使用,并通过图书上传的例子演示了session在实际应用中的使用。
php学习笔记-php会话控制,cookie,session的使用,cookie自动登录和session 图书上传信息添加和修改例子-day07
|
5月前
|
存储 安全 NoSQL
Cookie、Session、Token 解析
Cookie、Session、Token 解析
114 1
|
5月前
|
前端开发 JavaScript 安全
node登陆接口权限配置cookie-parser、express-session
本文介绍了在Node.js中使用express-session和cookie-parser实现登录接口的权限配置,包括验证码接口的生成和自定义中间件的创建,用于验证用户权限。
59 0
node登陆接口权限配置cookie-parser、express-session
|
5月前
|
存储 前端开发 Java
JavaWeb基础7——会话技术Cookie&Session
会话技术、Cookie的发送和获取、存活时间、Session钝化与活化、销毁、用户登录注册“记住我”和“验证码”案例
JavaWeb基础7——会话技术Cookie&Session
|
6月前
|
存储 JavaScript 前端开发
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
Cookie 反制策略详解:Cookie加解密原理、Cookie和Session机制、Cookie hook、acw_sc__v2、jsl Cookie调试、重定向Cookie
413 1