基础概念: HTTP状态码304表示“未修改”(Not Modified)。当浏览器请求某个资源时,如果服务器上的该资源自上次请求后没有发生变化,服务器会返回304状态码,告诉浏览器可以继续使用本地缓存的版本,而不需要重新下载整个资源。
相关优势:
类型与应用场景:
常见问题及原因:
解决方法:
示例代码:
const express = require('express');
const app = express();
app.use(express.static('public', {
maxAge: '1d',
etag: true,
lastModified: true
}));
app.get('/data', (req, res) => {
const data = { message: 'Hello, World!' };
res.set('ETag', generateETag(data));
res.set('Last-Modified', new Date().toUTCString());
if (req.headers['if-none-match'] === res.get('ETag')) {
return res.status(304).end();
}
res.json(data);
});
function generateETag(data) {
// 简单示例,实际应用中可以使用更复杂的算法
return JSON.stringify(data);
}
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在这个示例中,我们设置了静态资源的缓存策略,并对动态内容使用了ETag和Last-Modified头来实现304状态码的响应。
领取专属 10元无门槛券
手把手带您无忧上云