Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.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
更改html或javascript后无需重新启动服务器。为什么?_Javascript_Html_Tomcat_Servlets - Fatal编程技术网

更改html或javascript后无需重新启动服务器。为什么?

更改html或javascript后无需重新启动服务器。为什么?,javascript,html,tomcat,servlets,Javascript,Html,Tomcat,Servlets,在对HTML或JAVASCRIPT进行更改后,我们不需要重新启动服务器。但我们需要在对Servlet或任何服务器端代码进行更改后重新启动它。为什么?HTML和JS由浏览器运行时解释,因此更改会在浏览器刷新时立即反映出来。servlet和服务器端代码通常需要编译,因此需要重新启动服务器。服务器重新启动将强制重新加载已更改的类。这就是为什么JRebel很有趣(它可以在不重启服务器的情况下重新加载服务器端类)。希望这有帮助 服务器代码只是一个程序。当您运行一个程序时,它的内容被加载到RAM中并运行。如

在对HTML或JAVASCRIPT进行更改后,我们不需要重新启动服务器。但我们需要在对Servlet或任何服务器端代码进行更改后重新启动它。为什么?

HTML和JS由浏览器运行时解释,因此更改会在浏览器刷新时立即反映出来。servlet和服务器端代码通常需要编译,因此需要重新启动服务器。服务器重新启动将强制重新加载已更改的类。这就是为什么JRebel很有趣(它可以在不重启服务器的情况下重新加载服务器端类)。希望这有帮助

服务器代码只是一个程序。当您运行一个程序时,它的内容被加载到RAM中并运行。如果更新程序,磁盘上的版本将更新,但旧版本仍保留在RAM中。您必须关闭旧版本的服务器程序并运行新版本


HTML和Javascript在客户端上呈现。这些文件通常不会加载到服务器的RAM中(缓存目的除外)。HTML/JS甚至不是服务器代码的一部分(尽管JS可以与服务器交互,AJAX是一个突出的例子)

因为HTML和JS在客户端执行-在用户浏览器中。而不是服务器端代码。但在代码更改时重新启动服务器的建议是不正确的,因为服务器端代码由服务器对每个用户的外部请求执行


代码可以进行某种缓存,以便在某些特殊服务器端事件发生之前不执行代码。

这与服务器端或客户端无关,而是与服务器为应用程序提供服务的方式有关。您使用了“servlet”一词,因此我假设您是在用JavaEE编写

当您的Catalina服务器启动应用程序时,它会将整个应用程序加载到执行整个服务器的JVM中。它不会跟踪磁盘上的文件修改。如果你想让Catalina这样做,你可以签出这个

我不同意其他答案的地方在于简化:

并不是因为它是服务器端代码,所以您必须重新加载服务器。您可以找到各种跟踪文件修改的语言,例如PHP,甚至您亲爱的JavaEE,您可以在上面的链接中阅读


您还可以注意到,这并不是因为HTML、CSS和JS是在客户端执行的,您不需要重新加载服务器。这是因为每次客户端请求磁盘上的文件时,服务器配置都会读取这些文件。如果您有任何缓存系统,您需要先刷新它,然后才能看到修改后的文件下载到客户端。

因为HTML和JS不在服务器上运行?HTML、CSS和JS作为请求的响应发送到客户端。文件更改时,将发送更新的文件。虽然浏览器在缓存响应后也可能忽略服务器请求,并且浏览器可能正在使用其缓存的旧版本。可能值得一提的是,是否立即反映更改还取决于服务器的缓存配置。虽然动态HTML可能会设置为更频繁地获取,但在缓存过期或清除之前,JS和静态HTML内容可能不会再次关闭。