接口测试的基础(Cache篇)

269 阅读6分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第13篇文章,点击查看活动详情


Cache

当公司和酒店A达成协议之后,公司的成员就可以根据加班情况给酒店A提交订餐申请,从而得到订餐服务了。通俗点说就是加班时我们有饭吃啦。这种有配送的订餐模式是不是类似于外卖?那么当我们在饥肠辘辘地等待外卖时,最关注的问题是什么?当然是配送时间,也就是从订餐开始至实际能拿到美味佳肴开始吃所需要的时间。这个时间关系到两部分的质量。

(1)订餐者自身的感受:配送慢,则员工焦虑饥饿,导致无法集中精神工作;配送快,则员工情绪佳,省时,提高工作效率。

(2)饭菜的质量:配送慢,饭菜凉了,已经没有原先的美味;配送快,饭菜还是热乎的,不影响口感品质。

如果把这种生活中的场景转投到技术领域,那就和通过用Web或者移动客户端的方式打开网站和应用时所关注的问题极为相似了。从技术的角度来说,我们把用户的等待时间称为响应时间,也就是开发人员所说的性能。会有多方面的指标帮助测试及开发人员判定性能的好坏,其中最直观的就是看网页及应用的打开速度。其中提高反应速度的一个方式就是使用缓存。一个优秀的缓存策略可以为网络传输带来以下两方面好处。

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

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

从以上例子可以得出缓存的概念:使用缓存Cache的站点会监听客户端向服务器端发出的请求,并根据相应的缓存设置保存服务器端反馈的数据,比如HTML页面、图片等文件。如果用户再次使用相同URL 发送请求,请求不会直接发向服务器,而是通过缓存策略先行判断是否能够使用之前已经保存下来的反馈文件,从而降低服务器的负载及提高数据的响应时间。

在结合具体的网络协议来解释缓存的用法前,希望大家先明白关于缓存的基本概念。首先缓存根据其类型可以分为以下几种。

浏览器缓存

每一次项目忙碌时,加班总是特别多。在加班人数或者订餐类型不变的情况下,订餐者就可以不修改上一次订餐申请单中菜系套餐等内容直接进行提交。例如,完全从本地缓存中提取数据,如图所示。

image.png

而保存上一次通用订餐信息这个功能,不需要先确定酒店A有没有相关套餐这一行为,就是浏览器缓存最具体的体现方式。

浏览器(比如IE、Chrome、Firefox等)都有缓存设置选项,它可以将你浏览过的网页全部保存到你本地计算机的硬盘中。最常用的场景就是当你点击浏览器的“后退”或者曾经浏览过的页面的链接时就能直接使用这种缓存。同样的,当你不希望使用浏览器缓存时,可以通过删除浏览历史记录的操作对其进行删除,如图所示。

image.png

删除后,下一次访问同样的网站,浏览器会将请求直接发往服务器获取返回数据。

代理缓存

在酒店A和公司之间建立一个外卖管理平台,平台上存在酒店A与公司协商决定的所有菜式菜品及套餐内容。每一次公司向酒店A提交订餐申请时,先由外卖平台确定这些内容是否已经有过配餐记录。如果有,那么外卖平台不通过酒店A平台自主进行配菜及配送服务。这就缓解了酒店A的配餐压力,同时缩短了用户等待用餐的时间,而这个外卖平台就体现了代理缓存的作用,如图所示。

image.png

浏览器缓存由于客户端内存的限制不能存放过多的数据,否则会降低本机的性能。在实际应用中,开发者需要存储大规模的数据及面向更广泛的用户群时,可以使用代理缓存,它使用相同的原理,但可以用相同的方法为几百甚至几千的使用者服务。

因为代理缓存既不属于客户端,也不属于服务器端,而是利用网络路由请求信息。有以下两种最常用的场景。

(1)用户手动设置浏览器的代理。

(2)使用网页代理,网页代理将你的URL请求通过它潜在的网络定向到代理,所以用户甚至无需手动配置它们。

代理缓存是共享缓存的一种,不是只有一个人正在使用它们,而是同时存在大量的用户使用。 3.网关缓存

就像前面提到的“外卖平台”,网关缓存同样是充当一种代理的角色。从作用上来说,它同 样起到了代理缓存的用处。从协议的角度来说,网关缓存在受用领域上与代理缓存有区别。举个 例子,代理缓存就像是“外卖平台”中的配餐服务,而网关缓存就是“外卖平台”中的配送服务。 配餐服务可以使用订餐协议,而配送服务就需要使用与配餐不同的配送协议了。网关可以为通信 线路上的服务器提供不同的协议服务,如图所示。

image.png

网关缓存也是中间人,但不是由系统网络管理员出于节省带宽而部署,它们通常是由网站站长自己部署的,这样可以让自己的网站更具可扩展性,可靠性和性能更好。可以通过许多方法将 请求路由到网关高速缓存,它就类似于负载平衡器。

在缓存的概念中,还有一项比较重要的内容,就是按缓存策略来分,缓存分为以下两种情况。

(1)强缓存

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

(2)协商缓存

缓存策略:通过服务器来告知是否能用本地缓存。先和服务器通信,如果返回可以使用本地缓存再从本地缓存中取;如果不可以使用本地缓存,就会返回最新的资源。返回展示资源服务器处理这两种缓存的流程如图所示。

image.png