Tomcat can';看不到新创建的静态文件,服务器端正在缓存旧文件

Tomcat can';看不到新创建的静态文件,服务器端正在缓存旧文件,tomcat,tomcat7,static-files,Tomcat,Tomcat7,Static Files,我在WindowsXP上使用Tomcat7 我在%TOMCATDIR%/webapps/myapplication中有一个包含静态文件(HTML、CSS、JS)的目录 可以通过localhost:8080/myapplication 当“我的服务器目录”中的文件发生更改时,不会反映出来: 修改后的文件返回(200 OK)与之前的相同(使用Fiddler测试;确保没有浏览器缓存问题-使用不同的浏览器清除缓存等)。 该目录中新创建的文件不可访问(404) 无论我尝试重新加载文件多少次,甚至向

我在WindowsXP上使用Tomcat7

  • 我在
    %TOMCATDIR%/webapps/myapplication
    中有一个包含静态文件(HTML、CSS、JS)的目录
  • 可以通过
    localhost:8080/myapplication
当“我的服务器目录”中的文件发生更改时,不会反映出来:

  • 修改后的文件返回(200 OK)与之前的相同(使用Fiddler测试;确保没有浏览器缓存问题-使用不同的浏览器清除缓存等)。
  • 该目录中新创建的文件不可访问(404)
无论我尝试重新加载文件多少次,甚至向其添加查询字符串(
img.jpg?timestamp=…
),上述情况都会发生

%TOMCATDIR%/conf/context.xml
中,我设置了各种指令来禁用服务器端缓存:


WEB-INF/WEB.xml

怎么了?

解决方案似乎是删除
反资源锁定=“true”


如果有人更了解这个主题,或者知道如何以其他方式解决它,我将不胜感激。

Tomcat 8-禁用静态资源缓存:

context.xml


最后,解决方案是替换以下内容中的%TOMCATDIR%/conf/context.xml文件内容:

<?xml version='1.0' encoding='utf-8'?>
<Context cachingAllowed="false" cacheMaxSize="1" cacheTTL="1">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

WEB-INF/WEB.xml

请注意,如果要将文件上载到
webapps/myapplication
,则在取消部署webapp时,Tomcat可能会删除所有文件。您可能希望查看
元素的
别名
功能,以“装载”部署目录之外的目录:在取消部署期间不会删除这些目录。我不是指提取到
myapplication
的WAR,而是指我自己创建的文件夹。在这种情况下,我想Tomcat永远不应该移除它,对吧?无论如何,我不直接在这个文件夹中开发,我在其他地方开发,Eclipse FileSync插件在文件保存时从dev文件夹同步到服务器文件夹。不过,我会试着看看你写的东西,我的意思是Tomcat会在取消部署时删除部署目录(比如
webapps/myapp
)。它还将遵循符号链接(在支持此类内容的文件系统上)并删除所有文件。如果您使用
别名
,则在取消部署期间,别名路径中的文件将不会被删除。+1,我遇到了相同的问题,此问题已得到解决。我有点惊讶这没有更多的记录。文档中只说“请注意,将此设置为true会产生一些副作用,包括在正在运行的服务器中禁用JSP重新加载:请参阅Bugzilla 37668。”我遇到了这个确切的问题,但使我的上下文看起来与上面的示例完全相同(当然减去antiresourcelock=“true”)不会产生任何效果。有什么想法吗?另请参见和
<?xml version='1.0' encoding='utf-8'?>
<Context cachingAllowed="false" cacheMaxSize="1" cacheTTL="1">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>