强制 CSS 重新缓存

6

如果用户使用的是旧文件,有没有办法确定或强制CSS文件重新缓存?

3个回答

14

确保所有人重新加载你的新文件的最可靠方法是更改其URL。一种合理的方法是在不实际重命名它的情况下添加一个随机字符串:

<link rel='stylesheet' href='/mystyles.css?random=87365835'>
那是用大锤砸小坚果,而且绕过了所有存在的HTTP机制来实现这一点,但它将在任何地方绝对有效,而其他技术都有警告。编辑: @jitter: 您不必为每个请求自动更改URL - 您可以基于CSS文件的时间戳,甚至可以在想要确保重新加载CSS时手动更改它。

这是一种常见的做法 - 参见 https://dev59.com/-XRC5IYBdhLWcg3wAcQ3 - Paul Dixon
但是这会给您的服务器带来很大的负担,因为现在客户端每次加载CSS时,随机数“?random=xxx”都不同。虽然IE和FF可以缓存带有变量的URL,但浏览器本身并不支持缓存这种情况。 - jitter
那本来不应该起作用。浏览器理解URL并且不应该缓存?asdasd=adssad 部分。 - jitter
2
@jitter:如果我有/viewCustomer?custId=1和/viewCustomer?custId=2,我肯定不希望浏览器将这两个URL视为同一页,并且仅缓存单个副本。您提出的意见意味着,如果我访问/viewCustomers?custId=1,我可能会得到/viewCustomers?custId=9的缓存副本,因为它比custId=1的副本更新。据我所知,浏览器始终(并希望永远如此)将每个完整的唯一URL(包括查询字符串)视为要缓存的唯一资源(忽略任何其他缓存指令和特定浏览器的缓存策略)。 - Grant Wagner

2

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接