一次弄懂HTTP缓存相关的11个问题

2021-01-27  本文已影响0人  张德瘦嬢嬢
  1. 聊一聊浏览器的缓存机制
  2. HTTP是如何控制缓存的
  3. Expires字段是什么意思?有什么作用
  4. Expires和Cache-Control有什么区别?
  5. Last-Modified、If-Modified-Since字段有什么作用?
  6. Etag和If-None-Match字段有什么作用?
  7. Last-Modified和Etag哪个更好?
  8. Cache-Control:max-age=3600是什么意思?
  9. Cache-Control:no-cache是什么意思?
  10. Cache-Control:no-store是什么意思?
  11. Cache-Control:private是什么意思?
  12. no-cache和no-store有什么区别?

图片 文件 js css 等静态资源通常会缓存,而且服务端也就写两行代码能实现的事情。
动态的 比如 每天查询同一个地方的天气的结果就不需要缓存,就每次发请求就行

1. 聊一聊浏览器的缓存机制

我要向服务器请求一张图片,如下:


image.png

2. HTTP是如何控制缓存的

3. Expires字段是什么意思?有什么作用 ?然后Expires和Cache-Control有什么区别

Cache-Control设置后优先级比前者Expires高

4. Last-Modified、If-Modified-Since字段有什么作用?

image.png
image.png
image.png

5. Etag和If-None-Match字段有什么作用?

6. Last-Modified和Etag哪个更好?

  1. 通常 Etag约=Last-Modified(s)+文件长度
  2. 二者作用一样,大多数服务器生成Etag就是由“文件的修改时间”和“资源的长度”两个因子生成。

当然还有一些细微的差异:

7. Cache-Control:max-age=3600是什么意思?

浏览器本地缓存的时间:就是在这个时间内不需要再向服务器发请求,用自己缓存的
单位ms
一般设置比如一周,一个月。但不要太久


image.png

8. Cache-Control:no-cache是什么意思?

这个很容易让人产生误解,使人误以为是响应不被缓存。
实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。

9. Cache-Control:no-store是什么意思?

10. Cache-Control:private是什么意思?

11. no-cache和no-store有什么区别?

插播:
HTTP字段

上一篇下一篇

猜你喜欢

热点阅读