强缓存,会给一个Cache-Control:max-age = 时间(秒),这是一个缓存时间(比如 3600 秒,就是一个小时)
然后给一个Etag (相当于是一个文件特征码,如果本地特征码与服务器端不同,就是页面更新了,旧缓存不可用 )
比如上图的,服务器说这个页面可以缓存3600秒,那么3600秒之后,浏览器会带着Etag 询问服务器
这个缓存是否还能使用?,如果能就返回304,不能就返回200并携带新的文件
这个过程中,缓存时间和Etag 是强缓存,即普通缓存
而缓存时间过了,浏览器去帮你询问服务器缓存是否能用的这个过程,是弱缓存(直译应该是内容协商)
1.0 的强缓存是一个具体的时间(比如 2023年3月13日 12:00:00),过了这个时间就过期
然后它没有Etag,服务器会给一个此文件最后更新时间, 如果缓存过期了,浏览器会拿着这个时间去问服务器
是否能继续使用此缓存,其实就是拿最后更新时间与服务器端的最后更新时间对比
那么缺点很明显: 如果用户的电脑时间是错乱的,那么缓存时间就直接失效
然后如果服务器端在一秒内多次更新文件,那么你给这个最后更新时间给服务器,服务器不知道你是一秒内的哪个文件 从而导致更新失败