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