我有一个HTML页面,它是从节点服务器提供的,我为最大年龄设置了一个很大的值 -
function setCustomCacheControl(res, mimePath) {
try {
const cachedMimeType = ['text/html', 'text/css', 'text/javascript', 'application/javascript', 'text/plain', 'text/css', 'image/gif', 'image/png', 'image/jpeg', 'image/bmp', 'image/webp', 'image/svg+xml'];
if (cachedMimeType.indexOf(serveStatic.mime.lookup(mimePath)) > -1) {
res.header('Cache-Control', 'public, max-age=86400000');
} else {
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate, max-age=0');
res.header('Pragma', 'no-cache');
res.header('Expires', '-1');
}
} catch (e) {
console.error('Cache-Control: error', e);
}
}
设置此值后,如果我正在更改任何JS或CSS,那么除非我正在进行硬刷新或清除缓存,否则我无法获得浏览器的更新。原因是我还设置了HTML页面的max-age,因此浏览器总是加载旧内容。
此时,我从缓存的数组列表中删除了HTML,CSS和JS,并添加了一个较低的max-age属性。
function setCustomCacheControl(res, mimePath) {
try {
const cachedMimeType = ['text/plain', 'image/gif', 'image/png', 'image/jpeg', 'image/bmp', 'image/webp', 'image/svg+xml'];
if (cachedMimeType.indexOf(serveStatic.mime.lookup(mimePath)) > -1) {
res.header('Cache-Control', 'public, max-age=24000');
} else {
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate, max-age=0');
res.header('Pragma', 'no-cache');
res.header('Expires', '-1');
}
} catch (e) {
console.error('Cache-Control: error', e);
}
}
但是,我仍然没有获得更新的页面,除非我正在进行硬刷新或清除缓存,因为浏览器正在从缓存中提供这些文件。
我的问题是,有什么方法可以覆盖max-age属性值或忽略那些HTML,CSS和JS文件的max-age属性?
由于 Ruzdi