彻底弄懂浏览器缓存策略
缓存位置
浏览器可以在内存、硬盘中开辟一个空间用于保存请求资源副本。我们经常调试时在 DevTools Network 里看到 Memory Cache(內存缓存)和 Disk Cache(硬盘缓存),指的就是缓存所在的位置。请求一个资源时,会按照优先级(Service Worker -> Memory Cache -> Disk Cache -> Push Cache)依次查找缓存,如果命中则使用缓存,否则发起请求。这里先介绍 Memory Cache 和 Disk Cache。
我们说的浏览器缓存,可能是上述各种缓存。修改JavaScript文件,如果不用带随机数的url,就容易出现莫名其妙的新JS不加载的问题。
在 preload 或 prefetch 的资源加载时,两者也是均存储在 http cache,当资源加载完成后,如果资源是可以被缓存的,那么其被存储在 http cache 中等待后续使用;如果资源不可被缓存,那么其在被使用前均存储在 memory cache。
chrome浏览器的prefetch,增加了页面的用户体验,也会导致一些不易察觉的【缓存】问题。