代码之家  ›  专栏  ›  技术社区  ›  Antoine Roux

Tomcat仅每10分钟重新加载一次JS资源

  •  0
  • Antoine Roux  · 技术社区  · 11 年前

    我正在使用Eclipse和Tomcat开发Web应用程序。我使用Eclipse将代码更改自动部署到Tomcat。它适用于Java类:当我对.Java文件进行更改时,可以看到它立即反映在web应用程序上,而无需重新启动Tomcat(只要它在调试模式下运行)。

    但是对于JS文件,我必须停止Tomcat,通过Tomcat的“添加和删除”菜单,删除我的WAR文件,单击ok,将它们添加回去,然后再次单击ok,然后重新启动Tomcat以查看更改。简单的重启或清理并不能解决问题。我真的需要删除项目并再次添加它们。

    更糟糕的是,它曾经奏效。你知道是什么原因导致的吗?

    下面是我的Tomcat配置:

    Tomcat configuration (updated)

    你看到什么不对劲吗?我能提供更多信息吗?

    ==编辑===

    我检查了Eclipse复制Tomcat资源的位置,结果显示JS文件已更新。因此,这意味着Eclipse正确地完成了将资源复制到目标的任务。Tomcat没有选择更改。

    ==另一个编辑===

    我们的应用程序中有一个内部缓存。我停用了它并清除了它,但它不能解决问题。它不太可能来自那里。

    此外,自从我遇到这个问题以来,我已经两次看到Tomcat接受了我的更改,但只有当我在很长一段时间后回到应用程序时。。。

    ==一些新信息===

    看起来Tomcat终于接受了更改。。。但只有10分钟后。

    ==这也不是Eclipse问题===

    现在很明显,这不是一个Eclipse问题:我从命令行启动Tomcat,使用的参数与Eclipse相同。

    下面是我使用的命令行:

    /home/antoine/opt/java/jdk1.8.0_25/bin/java -Dcatalina.base=/home/antoine/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0 -Dcatalina.home=/home/antoine/opt/java/apache-tomcat-8.0.15 -Dwtp.deploy=/home/antoine/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps -Djava.endorsed.dirs=/home/antoine/opt/java/apache-tomcat-8.0.15/endorsed -Djavax.net.ssl.trustStorePassword=somepassword -Djavax.net.ssl.trustStore=/home/antoine/opt/java/apache-tomcat-8.0.15/my.keystore -Xms512m -Xmx1024m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 -classpath /home/antoine/opt/java/apache-tomcat-8.0.15/bin/bootstrap.jar:/home/antoine/opt/java/apache-tomcat-8.0.15/bin/tomcat-juli.jar:/home/antoine/opt/java/jdk1.8.0_25/lib/tools.jar org.apache.catalina.startup.Bootstrap start
    
    3 回复  |  直到 11 年前
        1
  •  0
  •   ACV    11 年前

    重新加载浏览器缓存 Ctrl+F5 。Firefox、Chrome中会发生什么?

        2
  •  0
  •   João Marcos    11 年前

    Antoine,java类需要编译,并且服务器知道编译的.class何时发生了变化,因为文件发生了变化。

    对于js、html或css文件,您可以将其放在项目的资源文件夹中,只需保存并在浏览器中刷新即可查看结果。通常,浏览器会在缓存中保存一些数据,您需要在刷新之前清理缓存并查看结果。

    如果清理浏览器缓存不起作用,请尝试在firefox中使用firebug(例如)来调试js代码,并检查资源文件夹中的文件位置。可能你使用的是旧版本或类似的东西。

    您可以在Tomcat服务器(服务器视图)中单击两次打开Tomcat概览页面。在“发布”选项卡中,选择了“资源更改时自动发布”选项。

        3
  •  0
  •   Antoine Roux    11 年前

    事实上,我的Tomcat服务器前面有一个nginx。我最近因为另一个原因更改了配置文件。但新版本包含缓存。这就是问题所在。

    在某个时候,我已经证明了这个问题不是来自Eclipse,也不是来自我们的应用程序,我已经检查了Tomcat配置并重新安装了它。

    我发现我的JS文件的HTTP状态304未被修改。这意味着某个web服务器决定回答这个问题。如果不是Tomcat,那么。。。