返回
HTTP缓存与常见面试题精讲,一张图尽在掌握
前端
2024-01-04 21:58:30
浏览器第一次向服务器发送请求获取资源,服务器响应报文的状态是200,响应头会带上Cache-Control、Etag字段。浏览器收到响应后会把资源存到本地。当浏览器再次发送请求获取该资源时,浏览器会先检查该资源是否过期(通过Cache-Control:max-age = 时间)。如果资源未过期,浏览器将直接使用本地缓存的资源,而不会向服务器发送请求。如果资源已过期,浏览器会向服务器发送请求,服务器会检查资源是否被修改(通过Etag字段)。如果资源未被修改,服务器将返回304 Not Modified状态码,浏览器将继续使用本地缓存的资源。如果资源已被修改,服务器将返回200 OK状态码,并带上最新的资源,浏览器将用新资源替换本地缓存的资源。
HTTP缓存策略
HTTP缓存策略主要分为强缓存和协商缓存。
强缓存
强缓存是指浏览器在不向服务器发送请求的情况下,直接使用本地缓存的资源。强缓存主要通过Cache-Control字段来控制。Cache-Control字段的值可以是max-age、no-cache、no-store等。
- max-age:指定资源的缓存时间,单位为秒。
- no-cache:指示浏览器在每次请求时都必须向服务器发送请求,以验证资源的有效性。
- no-store:指示浏览器不缓存该资源。
协商缓存
协商缓存是指浏览器在向服务器发送请求时,带上本地缓存资源的一些信息(如Last-Modified或Etag),以便服务器检查资源是否被修改。协商缓存主要通过Last-Modified和Etag字段来控制。
- Last-Modified:表示资源最后修改的时间。
- Etag:表示资源的唯一标识符。
HTTP缓存面试题
- 什么是HTTP缓存?
- HTTP缓存的策略有哪些?
- 强缓存和协商缓存的区别是什么?
- Cache-Control字段的常用值有哪些?
- Last-Modified和Etag字段的用途是什么?
- 如何让浏览器不缓存资源?
- 如何让浏览器每次都向服务器发送请求?
- 如何在浏览器中查看缓存的资源?
- HTTP缓存常见的问题有哪些?
- HTTP缓存对网站性能的影响是什么?
图表总结
缓存策略 | Cache-Control字段 | 资源过期时间 | 浏览器行为 |
---|---|---|---|
强缓存 | max-age=时间 | 资源未过期 | 直接使用本地缓存的资源 |
协商缓存 | Last-Modified或Etag | 资源未被修改 | 继续使用本地缓存的资源 |
无缓存 | no-cache | 每次都向服务器发送请求 | 不使用本地缓存的资源 |