测试要知道的HTTP三种缓存方式

2015即将过去 给自己在2015最后一篇文章吧 希望2016能够实现自己的目标 在喜欢的测试职业中 跨上一个目标大笑


今天讨论的是HTTP协议的3中缓存方式,首先为什么要有缓存呢?假如不做缓存,客户端每次进入某个触发点,都会向服务器请求新的数据,会导致:

1.网络比较差的时候,客户端体验会出现卡顿慢

2.客户端会浪费流量,明明两次返回一样的数据,却还要消耗两倍的流量,对app来说是致命的

3.用户量大的时候服务器压力会倍增,最后boom,当然没那么夸张就是了 -.+ 

这就要求请求链接的时候,两者有一个缓存机制,刚好HTTP提供给了我们三种组合缓存的方式,下面简单了解一下吧!


组合一:Last-Modify(响应报头) + If-Modified-Since(请求报头)


上方左边的是响应报头,在在传送的实体指定指定字段Last-Modified,表示服务器告诉我们这个文件最后修改时间为2015年12月30号然后客户端获取到这个时间,安卓端一般用一个sharepreference文件保存起来,下次再发请求的时候会把这个值带上去,就是右图的If-Modified-Since(图中是一个请求响应,因为客户端以前访问过,所以带旧的last-modify,不要搞混了哦),这样,服务端接受请求报头的字段修改时间,和服务端自己的文件比较一下,如果相同的话,会返回304 nochange,那么客户端就可以读取缓存而不用拉取新数据了。


组合二:ETag(响应报头) + If-None-Match(请求报头)


相应报头ETag标签代表资源标签,一般是不会变的,客户端获取同样缓存起来,下次发请求的时候带上ETag信息,不过不是ETag了,是改为If-None-Match标签,整体和last-modify类似,在服务端比较,当两者不同的时候服务端将会返回新的数据(图中是一个请求哦,右边先请求,左边是返回结果,因为比较ETag信息不一致,所以这个文件是更新了的)


组合三:Cache-Control和Expires


Cache-Control属性设置为max-age(针对HTTP1.1哈,现在一般都是1.1版本了,1.0用的比较少),代表服务端告诉客户端,你31536000秒内不用找我了,Expires也是类似,表示我在2016年12月15号才过期,这段时间你也不用找我。

安卓端一般作为内存缓存,而last-modify则是写入文件发请求带入比较,本质区别在于这个判断逻辑在于客户端判断,而modify则是服务端判断,两者不同的哦,运用来说modify一般是变更不会太频繁的请求,而max-age则是一般要刷新多次的,退出app重进就要求重新获取新数据的场景,测试的时候一定要考虑到HTTP报头中带有的缓存信息


--------end--------

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值