首先是自己学习整理,估计写得有些混乱。反正打个草稿,给自己留个印象。
由于客户端浏览器存在Cache的功能,来提高用户响应体验,所以时常会碰见这样的情况,客户端缓存的代码是旧代码,导致一列问题:如客户端调用后台已经废弃或者修改过的接口,导致js报错甚至是后台报错,导致业务无法正常开展。
如何解决这个问题呢? 解决的办法就是通过调用或者引入js文件的地方通过版本号来完成控制,这样既不和报头中的expire、cache-control相冲突。
同时真正对于页面缓存的影响的是http报文头中的几个关键字段:Expire、cache-control、if-modified-since、last-modified、if-none-match、Etag。
备注:
①如果同时存在cache-control和Expires怎么办呢?
浏览器总是优先使用cache-control,如果没有cache-control才考虑Expires
②If-Modified-Since和Last-Modified的特殊说明
request发起If-Modified-Since。服务端在接收到后和Last-Modified进行比较。如果If-Modified-Since>=Last-Modified那么就返回304
告诉客户端获取本地缓存文件。
③对于跨服务集群的,无法统一时间,或者系统时间调整后导致的,这样使用If-Modified-Since和Last-Modified就不好使用了。应该通
过If-None-Match和ETag来进行比较版本。如果服务端和客户端两侧的该值一致,则服务器告诉客户端304,客户端获取本地缓存内容。