Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确保用户检索到css、js和图像的新副本';s浏览器_Java_Apache_Tomcat_Spring Mvc - Fatal编程技术网

Java 确保用户检索到css、js和图像的新副本';s浏览器

Java 确保用户检索到css、js和图像的新副本';s浏览器,java,apache,tomcat,spring-mvc,Java,Apache,Tomcat,Spring Mvc,我们正在运行一个Java/SpringMVC应用程序,Tomcat6作为servlet容器,Apache2.2作为web服务器 我们最近部署了一个全新的品牌,彻底改变了网站的外观和感觉 我们在head部分的资源中附加了?v=1参数,但是我们仍然发现一些旧缓存资源的问题导致了问题 我们是否可以在tomcat或apache中设置一些东西来确保获取新副本,或者我们是否需要使用修订号来强制客户端获取新版本的资源?AFAIK没有开发人员工具,无法禁用浏览器缓存 尽管如此,您可以通过webapp本身的HTT

我们正在运行一个Java/SpringMVC应用程序,Tomcat6作为servlet容器,Apache2.2作为web服务器

我们最近部署了一个全新的品牌,彻底改变了网站的外观和感觉

我们在head部分的资源中附加了?v=1参数,但是我们仍然发现一些旧缓存资源的问题导致了问题


我们是否可以在tomcat或apache中设置一些东西来确保获取新副本,或者我们是否需要使用修订号来强制客户端获取新版本的资源?

AFAIK没有开发人员工具,无法禁用浏览器缓存


尽管如此,您可以通过webapp本身的HTTP头禁用浏览器缓存。仅HTTP 1.1“缓存控制”头就足以满足任何2000年后的浏览器。但是为了提供额外的保护,服务器可以同时发出这两种信息。

您可以尝试使用元标记,如下所示:

<meta http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT" />
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">


但是,我意识到IE9似乎在我的一个web项目中忽略了这些元标记。因此,我没有使用meta标记,而是在url中添加了一些随机数,如
?v=1235324324
。。。您可以使用
Math.random()
Date.getTime()
,基本上是独一无二的。您希望确保
v
的值每次都不同,而不是一直使用值
1

如果您希望确保资源重新加载,唯一的实际选择是在文件名中添加修订号。查询字符串通常可以工作,但有时不能。Apache与此无关,因为缓存是一个客户端问题。是否有一个快速而肮脏的解决方案,我可以立即实施,然后是一个长期的更理想的解决方案,允许缓存,但仍然确保在需要时提取新的资源?快速而肮脏,更改文件名。长期-编写一个部署脚本,在更改的资源上生成新的文件名,或者类似的东西。在PHP中记录一个这样的过程,你应该能够编写类似的东西。也许这对你也很有用:这是我应该附加的正确的元标记吗?尽管文件已经被缓存,所以对文件所做的任何更改都将被忽略。另外,完全禁用缓存是一个糟糕的决定,缓存的存在是有原因的。我同意,缓存的存在是为了性能。用户将需要手动刷新,因为这取决于客户端/浏览器。好的,当文件的下一次更新使用了其他内容时,可以使用1,例如,当不应再请求页面的缓存版本“1”时。事实上,我建议不要使用数学。random()。如果它是时间戳,那么它就是当前文件的时间戳——例如,当文件更新时,它会改变。