浏览器的对资源的缓存到底是什么策略

139 阅读1分钟

以下仅仅针对 https 的站点来分析,http 的站点亲测 html 是304(not modified)和js/css是200(memory cache)或者(dist cache)

PragmaCache-ControlExpiresEtag这些响应头无关

前提:https站点,非法证书,http2.0、有Etag

chrome的亲测

屏幕录制2023-12-15 下午4.05.10.gif

这里可以看到,资源的缓存结果不是每次都一致的,有时会有 cache,有时就没有,但还是被我找到了规律:刷新间隔时间短,得到缓存的几率非常大;刷新间隔时间稍长些,得到缓存的几率就比较小。但我还没有找到依据,如果找到后会马上告知大家

safari的亲测

屏幕录制2023-12-15 下午4.38.44.gif

这里可以看到,Safari的缓存结果却十分稳定,不管用哪种方式刷新都能得到完全一样的结果。这里也看出来Safari的大型资源的缓存持十分谨慎的态度,像这个vendor.js大于80K的永远都不缓存。至于单个资源的缓存容量上限是多少目前也不清楚,查到了会马上告知大家

总结

上面可以看到 html永远都是200而不是304,我改成 http 站点后马上变成304了,也看了别的站点如vue官网,他们也是304,所以我觉得应该是非法证书的问题,如果申请了合法的证书,资源的缓存结果应该就正常且稳定了。