• 1
  • 2
分享

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 原理图

原理流程图

1.png

2.3 代理缓存

2.3.1 原理

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

2.3.2 应用场景

用户手动设置浏览器代理

使用网页代理

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

2.3.3 原理图

原理流程图

2.png

2.4 网关缓存

2.4.1 原理

原理

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

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

2.4.2 缓存分类

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

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

2.4.3 缓存与协议流程图

强缓存与协商缓存图

3.png

2.4.4 缓存原理图

原理流程图

4.png

3、Cookie

3.1 原理

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

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

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

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

3.2 通行证

通行证解析

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

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

3.3 原理图

原理流程图

5.png

4、Session

4.1 传输步骤

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

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

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

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

4.2 原理图

原理流程图

6.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仅在它所在的域名内有效。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 读者提问:什么样的接口不适合做自动化测试呢 ?阿常回答:这个问题我反过来回答,什么样的接口适合做自动化测试呢 ?考虑投入产出比。从长远看,实现自动化能否给我们带来持续的效益。在我们公司的做法,选取核心业务流程,实现核心业务正常、异常及反向流程的接口自动化。今天一位读者朋友阿花问阿常这个问题:阿花在测试团队中负责接口自动化,她的疑问:接口自动化由她一个人负责,所有的接口难道都要做自动化,接口自动化是万能的吗?自动化测试如何创造业务价值?接口自动化不是万能的,它并不能比手工测试发现更多的bug,在我们做接口自动化之前,先考虑我们为什么做接口自动化,想解决什么问题。接口自动化的适...
            0 0 1261
            分享
          • 功能上: 功能上:软件测试只要基本上的功能不出现问题,不影响交互就没太大的问题;游戏测试则不同出现一些及其细微的功能缺陷都会导致游戏的胜负结果。性能上 :性能上:软件测试讲究3-5-10的响应速度,3秒为良好优秀,5秒为一般,10秒为极差;但游戏在性能提供上讲究就会比较严格,一些细微的卡顿都会让游戏整体体验感大打折扣;安全上 :安全上:软件测试与游戏测试都会讲究到其的安全性上,软件测试讲究保护账号的安全性防止他人读取与使用;但是游戏测试不单单讲究账号更讲究一些道具与一些外挂的出现;兼容上: 兼容上:软件测试对比游戏测试上游戏测试的兼容性要求更高,游戏测试不单单要求设备的数量...
            0 0 1307
            分享
          • 初始用Jmeter本想先学习嘛,想整个简单的接口调用,就公司系统的登录接口吧,结果就一登录接口就遇到各种问题,尤其是在登录接口传入的参数问题耗了很长时间。步骤:1、添加线程组(默认配置即可)2、添加一个HTTP请求sample填写各必填数据(协议、域名、方法、路径)把fiddler抓到的登录接口的参数拷进去: username=xiaowang&password=123456第一次我直接拷贝到:【消息体数据】如下图3、添加查看结果树运行,结果一直显示502{"code":"502","message":"请...
            0 0 3751
            分享
          •   爱达荷国家实验室(INL)证实,在他们遭受了网络攻击后,"SiegedSec"黑客将窃取的人力资源数据泄露到网上。INL 是美国能源部管理的一个核研究中心,拥有原子能、综合能源和国家安全方面的 5700 名专家。  INL 建筑群占地 890 平方英里(2,310 平方公里),拥有 50 座实验性核反应堆,其中包括历史上第一座能够生产可用电力的反应堆和第一座为核潜艇设计的发电厂。  目前,INL 正在进行下一代核电站、轻水反应堆、控制系统网络安全、先进车辆测试、生物能源、机器人、核废料处理等方面的研究。  本周一,SiegedSec 宣布已获得 INL 数据,包括&qu...
            0 0 969
            分享
          •   应用场景:在API的测试中,测试某些具体数据值,比如返回的结果是否是需求的类型,文件是否是符合且具备完整的数据结构。这些都是必须且很细致的测试工作。另外,组织、运行测试场景,以及演示测试结果这些也都使得测试人员要更加快速的找到合适的API测试方法。今天就详细地介绍如何用Karate组织、运行测试场景,以及验证Json 文件数据的正确性。  如果您想跟着以下示例操作,需要做好以下配置:  测试框架:Java + Karate + Junit 5  语言:Java, Cucumber  IDE:Intellij IDEA  项目类型:Maven  Karate 项目配置  为了能让跟着步骤操作...
            0 0 2076
            分享
      • 51testing软件测试圈微信