通过HTTP GET请求下载的文件具体会被保存到什么位置?
浏览器HTTP请求资源的存储位置说明
我们日常浏览页面时下载的各类资源,存储位置主要分三类,和资源类型、缓存策略、业务逻辑都有关系:
1. 内存缓存(Memory Cache)
- 生命周期和当前标签页完全绑定的短期缓存,读取速度最快,资源只要关闭对应标签页就会被完全释放
- 正在渲染的DOM引用的图片、JS运行时刚请求到还在被逻辑调用的JSON数据、当前页面正在执行的JS/CSS代码,都会优先存在这里
- 如果资源没有配置持久化缓存规则,也没有被业务代码主动存储,用完后就会被垃圾回收机制直接清理,不会留下其他痕迹
2. 磁盘缓存(Disk Cache)
- 符合HTTP缓存策略的资源会被持久化存储到本地磁盘的浏览器专属缓存目录,就算关闭浏览器、重启设备,只要缓存没有过期、没有被用户手动清理,下次访问就可以直接读取不用重新发起GET请求
- 可被缓存的资源包括静态图片、CSS、JS文件,也包括配置了缓存标识的JSON接口响应,判断规则以响应头的
Cache-Control、ETag、Last-Modified字段为准
不同浏览器的磁盘缓存存放路径不同,比如Chrome的默认缓存路径为用户目录下的
Chrome/User Data/Default/Cache,所有缓存文件都经过浏览器特殊编码,无法直接打开读取原始内容
3. 业务主动持久化存储
如果JS请求到JSON等数据后,业务代码主动调用了浏览器存储接口,数据还会按规则存在对应存储介质中:
- 写入
sessionStorage的内容和当前标签页生命周期绑定,标签页关闭就会清除 - 写入
localStorage、IndexedDB的内容会持久化保存在磁盘上,直到用户清理浏览器数据或者代码主动删除
内容的提问来源于stack exchange,提问作者kochayathi
相关产品推荐
相关产品推荐

