前言

程序员: 我写的程序会有Bug? 清除一下缓存再试试。

测试: 我清除完缓存如果还有Bug, 我40米的大刀只允许你跑3.1415926米。

用户: 什么情况, 怎么每次浏览页面都要等这么长时间, 这届程序员不大行啊!

...

以上的情景可能每天都在发生, 身为开发者对缓存这个概念一定也不会陌生, 大家在工作活生活中多多少少会碰到缓存产生的问题或者缓存相关的优化方案, 今天我们就深入浅出的聊聊 缓存 的那些事。

什么是浏览器缓存

浏览器缓存就是把一些资源或数据放到浏览器的内存或磁盘中, 当用户再次请求对应资源时, 可以更快速的获取以此提高用户体验。

一般是将一些用户频繁访问的界面或者很少发生变化的内容用户缓存。

但无论什么形式的缓存基本上都可以用一句话概括: 以节省计算机资源提升发起者获取数据的速度

使用缓存的俩种交互

浏览器缓存的默认行为

当服务器和客户端双方都没有对缓存方式进行协定, 那么浏览器默认缓存策略如下:

默认行为 (1)

可以看得出来, 如果静态资源命中强缓存且资源发生变化时, 用户无法获取到最新资源, 这种问题如何解决呢 ?

石器时代之--<刀耕火种>

解决这种问题时, 习惯在引用的静态资源后面拼接一个 时间戳或者版本号, 每次发版的时候与上一次不同, 以此告诉浏览器资源有变化需重新请求。

大前端时代之--<webpack-实现xxx的第101种方法>