1.浏览器缓存的类型
甜饼干
本地存储和会话存储
内存缓存和磁盘缓存
还有其他浏览器缓存,比如WebSQL,IndexDB等。,不常用,不做分析。
2.浏览器缓存特性分析。
2.1.cookie缓存
Cookie由服务器端生成,通常用于存储会话信息。只要设计合理,一般不会带来一致性问题。
2.2.本地存储和会话存储
localStorage是一个永久缓存。如果升级前端程序涉及到缓存键值的改变,那么在页面加载时应该调用清理或者重置缓存内容的JS代码。
sessionStorage是跟随当前浏览器窗口的数据缓存。当浏览器关闭并重新打开时,它会自动清除空。
2.3.内存缓存和磁盘缓存
内存缓存由浏览器内部控制,所以不能更改,一般不会带来副作用。
磁盘缓存是浏览器端资源文件的缓存。
3.控制磁盘高速缓存
在Http响应头中,cache-control用于控制浏览器采用不同的缓存策略。Web服务器可以配置响应头参数。以Nginx的配置文件为例。
3.1.私有(默认)
server {...add_header Cache-Control private; (或者不设置,默认为private)...}
private意思是使用浏览器缓存,它配合expires、last-modified等参数来判断资源文件是否需要重新下载。private表示使用浏览器缓存,与expires、last-modified等参数一起使用,决定是否需要重新下载资源文件。
3.2.无缓存(推荐)
server {...add_header Cache-Control no-cache;...}
no-cache并非不使用缓存,而是不直接使用缓存,每次都会向服务器请求响应头,通过对比ETag判断资源是否发生变动,如果没有变动(相应结果304),则使用本地缓存。所以这是个在性能和一致性比较平衡的选项。no-cache不使用缓存,但不直接使用缓存。每次都会向服务器请求一个响应头,通过比较ETag来判断资源是否有变化。如果没有变化(对应的结果304),它使用本地高速缓存。因此,这是一个兼顾性能和一致性的选择。
3.3.无商店
server {...add_header Cache-Control no-store;...}
no-store是让浏览器完全不使用缓存,不管资源是否变动,都向服务器请求重新下载资源文件。no-store表示浏览器根本不使用缓存,不管资源有无变化,都请求服务器重新下载资源文件。
本文来自倾心之夏投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/483406.html