在HTML或JAVASCRIPT中进行更改后,我们不需要重新启动服务器。但是我们需要在对Servlet或任何服务器端代码进行更改后重新启动它。为什么呢?
答案 0 :(得分:1)
HTML和JS由您的浏览器运行时解释,因此更改会立即反映在浏览器刷新上。 Servlet和服务器端代码通常需要编译,因此需要重新启动服务器。服务器重新启动会强制重新加载已更改的类。这就是JRebel有趣的原因(它可以在没有服务器重启的情况下重新加载服务器端类)。希望这有帮助!
答案 1 :(得分:1)
它不是关于服务器端或客户端,而是关于服务器为您的应用程序提供服务的方式。您已经使用了“Servlets”这个词。所以我假设你是用JavaEE写的。
当您的Catalina服务器启动应用程序时,它会将整个应用程序加载到执行整个服务器的JVM中。它不跟踪磁盘上的文件修改。如果你想要Catalina这样做,你可以结帐。 Why are my JSP changes are not reflected without restarting Tomcat?
我不同意其他人回答它的简化:
这不是因为您必须重新加载服务器的服务器端代码。您可以找到各种跟踪文件修改的语言,例如PHP,甚至是亲爱的JavaEE,您可以在上面的链接中阅读它。
您还可以注意到,不是因为HTML,CSS和JS是在客户端执行的,您不需要重新加载服务器。这是因为您的服务器配置会在每次客户端请求时读取磁盘上的文件。如果你有任何缓存系统,你需要先刷新它才能看到你修改过的文件下载到客户端。
答案 2 :(得分:0)
服务器代码只是一个程序。运行程序时,其内容将加载到RAM中并运行。如果更新程序,则更新磁盘上的版本,但旧版本仍保留在RAM中。您必须关闭旧版本的服务器程序并运行新版本。
HTML和Javascript在客户端上呈现。这些通常不会加载到服务器的RAM中(除了缓存目的)。 HTML / JS甚至不是服务器代码的一部分(尽管JS可以与服务器交互,AJAX就是一个突出的例子)
答案 3 :(得分:0)
因为HTML和JS在客户端执行 - 在用户浏览器中。而不是服务器端代码。但是,在代码更改时重新启动服务器是不正确的,因为服务器端代码会在服务器的每个用户外部请求上执行。
在某些特殊服务器端事件发生之前,您的代码可以进行某种缓存以不执行代码。