在HTTP缓存中,有几个容易混淆的概念,摘录极客实践的HTTP协议学习教程
比如,服务器设定“max-age=5”,但因为网络质量很糟糕,等浏览器收到响应报文已经
过去了 4 秒,那么这个资源在客户端就最多能够再存 1 秒钟,之后就会失效。
“max-age”是 HTTP 缓存控制最常用的属性,此外在响应报文里还可以用其他的属性来
更精确地指示浏览器应该如何使用缓存:
no_store:
不允许缓存
,用于某些变化非常频繁的数据,例如秒杀页面;
no_cache:它的字面含义容易与 no_store 搞混,实际的意思并不是不允许缓存,而是
可以缓存
,但在使用之前必须要去服务器验证是否过期,是否有最新的版本;
must-revalidate:又是一个和 no_cache 相似的词,它的意思是如果缓存不过期就可以
继续使用,但过期了如果还想用就必须去服务器验证。
听的有点糊涂吧。没关系,我拿生鲜速递来举例说明一下:
no_store:买来的西瓜不允许放进冰箱,要么立刻吃,要么立刻扔掉;
no_cache:可以放进冰箱,但吃之前必须问超市有没有更新鲜的,有就吃超市里的;
must-revalidate:可以放进冰箱,保鲜期内可以吃,过期了就要问超市让不让吃