全面解析:强缓存与协商缓存的差异、缓存失效的原因及解决方案、Nginx缓存配置指南以及缓存存储位置与失效问题
最编程
2024-02-13 10:36:46
...
引入了缓存固然是好事,能大大提升响应速度以及减轻服务端的压力,但是也会出现一些问题,比如我们明明更新了系统版本,为什么客户端看到的还是老文件。在不同的时代有不同的解决方案。
1、老方案通过人工自己修改文件名或者在文件名后带上版本号、时间戳,这样客户端就会当新文件请求并使用,之前的强缓存就算在有效期内也会失效。
<script src="http://randy.js?version=1.1.1> </script>
2、新方案
在现在的构建阶段基本上都不需要人工操作了,都是使用构建工具比如Wbpack、Gulp、Grunt等构建工具自动构建。
比如在使用Webpack构建的时候,会根据文件名或文件内容自动计算hash值来给文件命名,当内容或文件名发生改变的时候,构建出来的文件名也一定会不一样,这样也解决了强缓存还在有效期内的问题。
3、扩展:pragma
pragma是旧产物,已经逐步抛弃,有些网站为了向下兼容还保留了这个字段。pragma的值为no-cache时,表示禁用缓存。优先级是 pragma > cache-control > expires。
上一篇: 改进旧代码设计的技巧 - 学习(三):如何重新整理数据
下一篇: 蓝桥杯比赛奖金发放错误的详细清单