1. 如果代码上线时,运维忘记给资源设置缓存头,浏览器会如何处理HTML资源文件?
在没有设置缓存头情况下,浏览器会给资源文件一个默认缓存有效时间,这个时间是请求头里的Date时间值与last-modified时间差值除以10,即响应时间与最后修改时间时间差的1/10,例如last-modified修改时间为UTC时间上午8点,请求时间为UTC时间下午6点,间隔10小时,则默认缓存时间为1小时,这是浏览器默认设置的,但是用户能否请求到最新资源还取决于用户操作。
- 第一种情况是,用户在首次打开网站后,后面直接通过连接访问网站地址,这时在默认资源缓存没有过期条件下,浏览器默认会走缓存,不会去请求最新资源。
- 第二种情况是,用户通过刷新网站发起请求,这时浏览器会去校验资源是否为最新,资源发生变动时会进行最新资源的请求,原因是浏览器在手动刷新时默认给html文件添加cache-control:no-cache的请求头,资源会默认走协商缓存。