课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
我们在上文中给大家简单介绍了https缓存应用的一些基础知识以及常见类型等内容,而本文我们就继续来学习一下,软件开发协商缓存的特点与应用方法。
特点
协商缓存,也称为对比缓存,从名称可以看出,它没有强制缓存那么霸道,可以有商有量的来确定是否使用缓存资源。
协商缓存机制下,浏览器需要发送缓存标识,去向服务器验证缓存标识是否有效,进而判断是重新发起请求、下载完整的响应,还是从本地获取缓存的资源。
如果服务端提示缓存资源未改动(NotModified),资源会被重定向到浏览器缓存,这种情况下网络请求对应的状态码是304。
属性
对于协商缓存来说,缓存标识的传递是我们着重需要理解的,它在ResponseHeader和RequestHeader之间进行传递。
缓存标识可以分为两类:
Last-Modified和If-Modified-Since
Etag和If-None-Match
我们一般会说,协商缓存的缓存标识是Last-Modified(后修改时间)和Etag(标签或名称),因为它们两个都是由服务端确定并返回的。
浏览器携带的是具有判断意味的属性——If-Modified-Since(从什么时间以来是否改变)和If-None-Match(是否匹配不到)。
缺陷
使用Last-Modified是有一定缺陷的:
如果资源更新的速度是秒以下单位,那么该缓存是不能被使用的,因为If-Modified-Since只能检查到以秒为小计量单位的时间差。
如果文件是通过服务器动态生成的,那么该方法的更新时间永远是生成的时间,尽管文件可能没有变化,所以起不到缓存的作用。
我们编辑了文件,但文件的内容没有改变。服务端并不清楚我们是否真正改变了文件,它仍然通过后编辑时间进行判断。因此这个资源在再次被请求时,会被当做新资源,进而引发一次完整的响应——不该重新请求的时候,也会重新请求。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。