前端经典面试题合集, DNS HTTP 缓存有哪些实现方式?什么是协商缓存和强制缓存?
前端经典面试题合集, DNS HTTP 缓存有哪些实现方式?什么是协商缓存和强制缓存?
QA
Step 1
Q:: DNS HTTP 缓存有哪些实现方式?
A:: DNS HTTP 缓存可以通过两种主要方式实现:强制缓存和协商缓存。强制缓存是通过响应头中的 Cache-Control 或者 Expires 字段来指定资源的缓存时间,在缓存时间内,客户端不需要请求服务器,直接从缓存中获取资源。而协商缓存则是在资源过期或没有明确缓存指令时,客户端会向服务器发送请求,通过 Last-Modified、ETag 等字段与服务器进行验证,如果资源未改变,服务器返回 304
Not Modified 状态码,客户端继续使用缓存的资源。
Step 2
Q:: 什么是协商缓存和强制缓存?
A:: 协商缓存是指客户端每次请求资源时,服务器会通过某些字段(如 Last-Modified、ETag)来判断资源是否有变化,如果没有变化,服务器会返回 304 Not Modified,客户端直接使用缓存中的资源。强制缓存则是通过响应头中的 Cache-
Control 或 Expires 字段,告知客户端在指定时间内可以直接从缓存获取资源,而无需与服务器通信。
Step 3
Q:: DNS 的工作原理是什么?
A:: DNS(Domain Name System)的工作原理是将域名解析为 IP 地址。它分为递归查询和迭代查询两种方式。客户端首先向本地 DNS 服务器发起递归查询,如果本地 DNS 服务器无法解析,会进行迭代查询,即逐级向上级 DNS 服务器请求,直到找到正确的 IP 地址,最终将结果返回给客户端。
Step 4
Q:: 如何实现 HTTP 缓存?
A:: HTTP 缓存可以通过设置 Cache-Control、Expires、Last-Modified、ETag 等响应头来实现。Cache-Control 可以控制缓存的最大存活时间(max-age),设置为 public 或 private 来决定是否可以被共享缓存。Expires 定义了资源过期的时间点。Last-
Modified 和 ETag 用于协商缓存,以确保客户端使用最新版本的资源。