0
通常情况下,我会通过http2的文件服务解决这样的请求:更新缓存请求
if (req.url === '/main.html') {
let files = {
'main.css': {
type: 'text/css'
},
'main.js': {
type: 'application/javascript'
}
};
for (let name in files) {
let push = res.push('/' + name, {
response: {
'Content-Type': files[name].type,
'Cache-Control': 'public, max-age=31556926'
}
});
push.on('error', er => console.log(er));
push.end(fs.readFileSync('/home/src/' + name));
}
res.writeHead(200, {
'Content-Type': 'text/html'
});
res.end(`
<html>
<head>
<link rel="stylesheet" href="/main.css">
<script src="/main.js"></script>
</head>
<body></body>
</html>
`);
}
我有一个问题,当他们的新内容都可以更新这些2个文件main.css
和main.js
。 它们会通过发送另一个/main.html
请求来更新吗?如果不是,我如何更新它们?
非常感谢您的回答。我还考虑通过'max-age'设置一个很短的生命期来移除旧的缓存。你有没有尝试过这种方法?它是否适用于所有浏览器? – Lewis
嗨!是的,这种方法在Internet Explorer,Chrome和Firefox中运行良好。 Safari不支持HTTP/2 Push,所以不需要它。 – dsign