在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:可以放进冰箱,保鲜期内可以吃,过期了就要问超市让不让吃


 

HTTP缓存中的几个容易混淆的概念_HTTP协议