编辑
2024-02-22
面试题
00
请注意,本文编写于 238 天前,最后修改于 115 天前,其中某些信息可能已经过时。

今日问题:强缓存和协商缓存?

Q:如果在前端面试中,被问到强缓存和协商缓存,怎么回答比较好,全面详细一点,越详细越好?

A:在前端面试中,被问到强缓存和协商缓存时,可以这样回答:

  1. 强缓存:
  • 强缓存是指浏览器在请求资源时,直接从本地缓存中获取资源,并不发起请求到服务器。
  • 判断是否使用强缓存是通过比较请求时的时间与资源的过期时间(或者缓存有效时间)来决定的。
  • 常见的强缓存控制字段有 Expires 和 Cache-Control。
  • Expires:是服务器响应消息头字段,表示资源的到期时间,是一个绝对时间,即具体的过期日期。
  • Cache-Control:是 HTTP/1.1 提供的更灵活的缓存控制方式,包含多个指令,如 max-age 表示资源的最大缓存时间,单位是秒。
  1. 协商缓存:
  • 协商缓存是指浏览器在请求资源时,会向服务器发送请求,服务器根据资源的最后修改时间或者唯一标识符(ETag)等信息来判断是否命中缓存。
  • 如果资源未发生变化,则返回 304 Not Modified 状态码,浏览器从本地缓存中加载资源;否则返回新的资源和 200 OK 状态码。
  • Last-Modified / If-Modified-Since:服务器响应消息头字段 Last-Modified 表示资源的最后修改时间,浏览器再次请求资源时会发送 If-Modified-Since 字段,表示资源的上次请求时间。
  • ETag / If-None-Match:服务器响应消息头字段 ETag 是资源的唯一标识符,浏览器再次请求资源时会发送 If-None-Match 字段,包含上次请求的 ETag 值。
  1. 优缺点对比:
  • 强缓存:

    • 优点:减少了网络请求,加快页面加载速度,节省带宽资源。
    • 缺点:资源过期后仍然可能存在过时数据,需要等待下一次缓存更新。
  • 协商缓存:

    • 优点:能够准确判断资源是否发生变化,节省了不必要的数据传输。
    • 缺点:需要向服务器发送请求,增加了网络延迟。
  1. 使用场景:
  • 强缓存适用于静态资源,如图片、样式表、脚本等,这些资源在一定时间内不会发生变化。
  • 协商缓存适用于动态内容或者频繁更新的资源,如接口数据、动态页面等,可以根据资源的变化情况决定是否返回新的数据。
  1. 缓存验证策略:
  • 强缓存失效后,浏览器会发送请求到服务器,服务器根据资源的修改时间或者唯一标识符来验证资源是否发生变化。
  • 如果资源未发生变化,则返回 304 Not Modified 状态码,浏览器从本地缓存加载资源;否则返回新的资源和 200 OK 状态码。

综上所述,强缓存和协商缓存各有其优缺点和适用场景,合理使用可以提高页面加载速度和用户体验。

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:CreatorRay

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!