gpt4 book ai didi

javascript - 解决矛盾的 Cache-Control header

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:07 24 4
gpt4 key购买 nike

我正在维护一个使用静态内容插件的 Restify 服务器。该插件强加了一个 Cache-Control header ,尽管事先发生了任何事情。 max-age 始终包含在内,默认为 3600。

Cache-Control: public, max-age=3600

除了 index.html 之外,我需要为所有内容设置较大的 max-age

server.pre((req, res, next) => {
const path = url.parse(req.url);
if (path.pathname === '/' && req.accepts('text/html')) {
req.url = '/public/index.html';

// Encourage the client to always download index.html.
res.header('Expires', '0');
res.header('Cache-Control',
'no-store, no-cache, must-revalidate, max-age=0');
}

next();
});

问题是静态服务器强制添加Cache-Control导致服务器发送矛盾的max-age值。

Cache-Control:no-store, no-cache, must-revalidate, max-age=0
Cache-Control:public, max-age=315360000

我尝试了一些方法来阻止它,但没有用,但这甚至是一个问题吗?我不知道浏览器是否会通过下载新鲜的 index.html 来解决矛盾(这就是我想要的)

最佳答案

报价 Michael Krebs :

I believe max-age=0 simply tells caches (and user agents) the response is stale from the get-go and so they SHOULD revalidate the response (eg. with the If-Not-Modified header) before using a cached copy, whereas, no-cache tells them they MUST revalidate before using a cached copy. From 14.9.1 What is Cacheable [...]

为了简洁起见,这句话有些断章取意,但规范的语言使 max-age 成为比 no-cache 更“弱”的指令, must-revalidate 等。实际行为仍然是浏览器中的实现细节,但如果 max-age 出现在 strong 告诉浏览器重新验证的指令附近-验证或不缓存,应该合理地期望浏览器将遵守(Corroborating answer)。

关于javascript - 解决矛盾的 Cache-Control header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com