Expires 是一个 HTTP 响应头,用于定义响应的过期时间。如果客户端的当前时间小于 Expires 的时间,那么客户端可以直接使用缓存的响应,而不需要向服务器发送请求。
Expires 的值是一个日期和时间,使用 GMT 格式表示。例如:
Expires: Wed, 21 Oct 2025 07:28:00 GMT
这表示这个响应将在 2025 年 10 月 21 日 07:28:00 过期。
需要注意的是,Expires 的工作依赖于客户端和服务器的时间设置是否正确。如果时间设置不正确,可能会导致缓存行为异常。因此,现代的 HTTP 应用通常使用 Cache-Control 头的 max-age 指令来代替 Expires,因为 max-age 指定的是相对时间,不受时间设置的影响。
在前端,我们通常不直接设置 Expires。Expires 是一个 HTTP 响应头,通常由服务器设置并发送给客户端。然后,客户端(例如浏览器)会根据这个头来决定是否使用缓存的响应。
如果你想在服务器端设置 Expires,你可以在服务器的配置文件或者在后端代码中设置。例如,如果你使用的是 Express.js,你可以这样设置:
app.use(express.static('public', {
setHeaders: function (res, path, stat) {
res.set('Expires', new Date(Date.now() + 86400000).toUTCString()); // 设置 Expires 为 24 小时后
}
}));
这段代码会为所有在 public 目录下的静态文件设置 Expires 头。
如果你想在前端控制缓存行为,你可以使用 Service Worker。Service Worker 可以拦截请求,并控制是否使用缓存的响应。但是,Service Worker 不能直接设置 Expires 头,它使用的是 Cache API,这是一个更灵活的缓存机制。