interview
frontend-classic
DNSHTTP缓存有哪些实现方式?什么是协商缓存和强制缓存?

前端经典面试题合集, DNS HTTP 缓存有哪些实现方式?什么是协商缓存和强制缓存?

前端经典面试题合集, DNS HTTP 缓存有哪些实现方式?什么是协商缓存和强制缓存?

QA

Step 1

Q:: DNS HTTP 缓存有哪些实现方式?

A:: HTTP 缓存主要有两种实现方式:强制缓存和协商缓存。强制缓存通过 Cache-Control 和 Expires 响应头来实现,它们指示浏览器是否可以直接从缓存中读取资源而不需要向服务器发送请求。协商缓存则通过 Last-Modified 和 ETag 响应头来实现,它们要求浏览器向服务器验证缓存资源的有效性,如果资源没有变化,服务器会返回 304 Not Modified 状态码,浏览器则从缓存中读取资源。

Step 2

Q:: 什么是协商缓存?

A:: 协商缓存是一种在客户端与服务器之间进行缓存验证的机制。它利用 Last-Modified 和 ETag 头字段,客户端在缓存资源过期后,会发送请求带上这些字段,服务器通过判断这些字段是否匹配来决定资源是否发生变化,如果没有变化,返回 304 状态码,不返回资源内容,客户端继续使用本地缓存。

Step 3

Q:: 什么是强制缓存?

A:: 强制缓存是一种通过缓存头指示客户端直接使用本地缓存的机制。它通过 Cache-Control 和 Expires 头字段来控制缓存的有效期。在有效期内,浏览器不会发送请求到服务器,直接使用本地缓存的资源,提高了访问速度,减少了服务器负担。

Step 4

Q:: Cache-Control 和 Expires 有什么区别?

A:: Cache-Control 是 HTTP/1.1 引入的用于控制缓存的字段,支持多种指令如 max-age、no-cache、no-store 等。而 Expires 是 HTTP/1.0 使用的字段,指定一个具体的过期时间点,过了这个时间点资源就失效。Cache-Control 更灵活且优先级高于 Expires。

用途

面试这些内容的目的是考察候选人对浏览器缓存机制的理解和运用能力。在实际生产环境中,合理使用缓存策略可以显著提升网页加载速度,减少服务器负载,提高用户体验和资源利用效率。因此,掌握这些知识对于前端开发人员来说是非常重要的。\n

相关问题

🦆
ETag 和 Last-Modified 有什么区别?

ETag 是服务器生成的资源标识符,可以精确地表示资源的状态变化,Last-Modified 则是资源的最后修改时间。ETag 更精确,Last-Modified 在某些情况下可能会因为时间精度不够导致误判。

🦆
如何设置浏览器缓存策略?

可以通过在 HTTP 响应头中设置 Cache-Control、Expires、ETag 和 Last-Modified 等字段来控制缓存策略。例如,通过 Cache-Control: max-age=3600 可以设置资源缓存一个小时。

🦆
如何清除浏览器缓存?

用户可以通过浏览器设置来清除缓存,开发者可以通过 Cache-Control: no-cache 或 Cache-Control: no-store 来控制不缓存或缓存后立即失效。

🦆
浏览器缓存机制对 SEO 有什么影响?

合理设置缓存可以提高网站加载速度,改善用户体验,从而间接影响 SEO 排名。但是,如果缓存设置不当,可能导致搜索引擎抓取到过期内容,对 SEO 产生负面影响。

🦆
HTTP 304 状态码的意义是什么?

HTTP 304 状态码表示资源未修改,客户端可以继续使用本地缓存的副本。这是在协商缓存中常见的响应状态码,旨在减少不必要的数据传输,节约带宽。