DNS缓存和浏览器缓存的关系

86 阅读1分钟

1. DNS缓存的作用

-- DNS缓存仅存储域名与IP的映射关系(如 www.example.com → 93.184.216.34)。

  • 它的唯一功能是跳过重复的DNS查询,直接返回IP地址,不涉及资源内容。
  • DNS缓存生效后:浏览器会直接使用缓存的IP发起HTTP请求,但后续的网页资源(HTML、CSS、JS等)是否命中缓存,取决于HTTP缓存策略,与DNS缓存无关。

2. 浏览器资源缓存的触发条件

浏览器是否从本地缓存加载资源(如图片、CSS等),取决于以下因素:

  1. HTTP缓存头部(如 Cache-ControlETag)。
  2. 资源的URL是否变化(例如通过文件名哈希区分版本:style.abc123.css)。
  3. 缓存是否过期(强缓存/协商缓存逻辑)。

与DNS缓存的关系
DNS缓存只是帮浏览器快速找到服务器的IP地址,而资源是否从本地缓存加载,完全由HTTP请求的缓存策略决定。两者是独立的步骤

3. 完整流程

假设访问 https://www.example.com/index.html

  1. DNS解析

    • 浏览器检查DNS缓存 → 若有缓存(如 www.example.com=93.184.216.34),直接使用IP;否则递归查询。
  2. 建立TCP连接

    • 通过IP地址与服务器建立连接(如 93.184.216.34:443)。
  3. HTTP请求

    • 浏览器检查 HTTP缓存

      • 若 index.html 的 Cache-Control: max-age=3600 未过期,直接读取本地缓存,不发送请求
      • 若过期,向服务器发送请求,可能返回 304 Not Modified(协商缓存生效)或新资源。
  4. 渲染页面

    • 若HTML/CSS/JS等资源命中HTTP缓存,则从本地加载;否则重新下载。