除非我们重新部署 war 文件,否则 Js 更改不会反映在浏览器中

Posted

技术标签:

【中文标题】除非我们重新部署 war 文件,否则 Js 更改不会反映在浏览器中【英文标题】:Js changes are not reflecting in the browser unless we redeploy the war file 【发布时间】:2016-05-05 14:49:55 【问题描述】:

我使用 IntelliJ 开发了一个 Spring Boot Web 应用程序。对于每一个 Js 和 html 更改,我都必须重新部署 war 文件才能使更改反映在浏览器上。有什么方法可以在不重新部署的情况下即时反映更改?

【问题讨论】:

【参考方案1】:

自动更新浏览器代码的最简单方法是将Grunt 与watch 和livereload 一起使用。当您保存对文件的更改时,它将自动推送到浏览器。不需要浏览器插件。

下面的plunk 演示了一个最基本的用法。将文件放到任何目录中,然后运行

npm install -g grunt-cli
npm install
grunt serve

它将启动一个服务于 index.html 的网络服务器(连接)。对 index.html 所做的任何更改都会自动发送到浏览器。 Connect 还配置为将任何对 /api/ 的请求中继到另一个 HTTP 服务器(通常是您的本地 Jetty 实例)。

我包含了一个典型的配置,您将把 javascript 放在 app/scripts 下,将 CSS 放在 app/styles 下,将图像放在 app/images 下。对其中任何一个的更新也将被推送到浏览器。

【讨论】:

【参考方案2】:

如果您使用的是 springboot 版本 >= 1.3,您可以使用包含嵌入式 liveReload 服务器的 spring-boot-devtools 模块。从那里你只需要一个支持 liveReload 扩展的浏览器。

Maven POM

<dependencies>
 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
 </dependency>
</dependencies>

分级

dependencies 
    compile("org.springframework.boot:spring-boot-devtools")

【讨论】:

【参考方案3】:

您可以像 nginx 一样实现实时缓存。为 css 和 ui 相关更改创建单独的项目,并链接到 nginx 的 assets 文件夹。然后你必须启动那个 nginx 服务器。因此,当您更改文件时,无需一次又一次地重新启动服务器。 欲了解更多信息https://www.nginx.com/blog/scaling-web-applications-nginx-part-ii-caching-monitoring/#caching

【讨论】:

以上是关于除非我们重新部署 war 文件,否则 Js 更改不会反映在浏览器中的主要内容,如果未能解决你的问题,请参考以下文章

除非选择了项目,否则Visual Studio不会保存构建更改

SPRING BOOT 手动 War 文件部署到 Tomcat 并重新启动服务器,不创建数据库

除非重新启动项目,否则 VS .Net Core Razor 页面不会更新

取消部署war文件后关闭数据库池连接

重新部署war需要重启tomcat吗?

转载-Weblogic热部署启动