接口测试之Fiddler+HTTP协议Cache
一、什么是缓存Cache? 为什么要使用它?
一个使用缓存Cache的站点会监听客户端向服务器端发出的请求,并保存服务器端的回应——比如HTML页面、图片等文件。接着,如果有另外一个使用相同URL发送请求,他能够使用之前已经保存下来的反馈文件,而不是再次向服务器发出请求。
有两个主要的理由让人们使用缓存:
减少延迟— 因为所发出的网页请求是指向更接近客户端的缓存而不再是源服务器端,因此请求所花费时间更短,这让网站看上去反应更快。
降低网络负荷— 因为缓存文件可以重复使用,节省了不少的带宽.这也给用户省了不少流量.
二、Cache缓存分类
Cache缓存分为客户端缓存和服务端缓存
服务端缓存又分为 代理服务器缓存 和 反向代理服务器缓存(也叫网关缓存,比如 Nginx反向代理、Squid等),其实广泛使用的 CDN (快播貌似就是用的这个)也是一种服务端缓存,目的都是让用户的请求走”捷径“,并且都是缓存图片、文件等静态资源。
客户端缓存一般指的是浏览器缓存,浏览器缓存控制机制有两种:HTML Meta标签 vs. HTTP头信息。目的就是加速各种静态资源的访问,想想现在的大型网站,随便一个页面都是一两百个请求,每天 pv 都是亿级别,如果没有缓存,用户体验会急剧下降、同时服务器压力和网络带宽都面临严重的考验。
三、使用fiddler查看缓存
打开fiddler抓包,用浏览器打开百度网页搜索fiddler查看缓存,点击搜索结果的第一条:fiddler怎么清除自身缓存_百度知道。抓包情况如下:
图1这里就是客户端发出请求后,告诉服务器:“亲,我这没缓存啊,您得发全部网页数据过来哦~!!”,随后服务器返回:“200 OK”。
第一次请求后,我们再次刷新(F5)下这个页面,抓包情况如下:
F5刷新后页面缓存会看到左侧区域,有很多304显示(右侧cache中已经有了参数)说明浏览器已经使用了缓存数据。
四、服务器如何判断缓存是否过期
Web服务器通过2种方式来判断浏览器缓存是否是最新的。
第一种, 浏览器把缓存文件的最后修改时间通过 header ”If-Modified-Since“来告诉Web服务器。
第二种, 浏览器把缓存文件的ETag, 通过header "If-None-Match", 来告诉Web服务器。
五、缓存是开发最大的敌人
先说说缓存的好处:
1. 减少了冗余的数据传输,节省了网费。
2. 减少了服务器的负担, 大大提高了网站的性能
3. 加快了客户端加载网页的速度
资料来源测试部落-萌猫君