【发布时间】:2012-06-15 17:36:18
【问题描述】:
我最近向我的网站添加了 HTTP 标头,以通知浏览器在每次遇到给定的 JS/CSS URL 时与服务器进行检查。我已经对其进行了测试,并且效果很好;现在所有浏览器都会发出有条件的GET 请求。
但问题是——人们仍然缓存了旧的标头;标题或多或少告诉浏览器“永远缓存这个;不要费心要求更新!”。这可以通过硬刷新来解决。在我们推出代码后,我不想与每个人交流,请在任何错误页面上按 F5。
是否有任何 HTTP 标头/HTML 元标记我可以放在 HTML 文档本身上说“浏览器,忽略 JS/CSS 文件上的标头并下载所有最新版本的此页面上包含的文件”?
随着越来越多的人清除缓存或学会自行刷新,这个问题最终会自行解决。但是,我宁愿现在修复它。然后在一个月左右的时间里,我将删除 HTML 级别的标头,以便在我想要的地方缓存——基于每个资源。
编辑:我不想重命名资源或添加查询参数。这就是我们过去使用的(?v=18、?v=19 等),每次更新资源时增加这个数字是一件苦差事。即使以编程方式进行也不是理想的解决方案。特别是现在我们的服务器配置正确。在 HTTP 级别上执行此操作更有意义,因此无论您如何访问它,它都可以工作 - 包括在页面上、直接从地址栏或其他方式。
【问题讨论】:
-
也许更改样式表的名称,然后更改 HTML 以加载不同的表?