2017-02-21 74 views

回答

1

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

+2

值得一提的是,是否立即反映更改还取决于服务器的缓存配置。尽管可以将动态HTML设置为更频繁地提取,但JS和静态HTML内容可能无法再次下载,直到缓存过期或被清除。 –

0

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

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

0

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

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

1

这不是关于服务器端或客户端,而是关于您的服务器为您的应用程序提供服务的方式。你已经使用了'Servlets'这个词,所以我假定你正在用JavaEE编写。

当您的Catalina服务器启动应用程序时,它会将整个应用程序加载到执行整个服务器的JVM中。它不会跟踪磁盘上的文件修改。如果你想让Catalina做到这一点,你可以检查这一点。 Why are my JSP changes are not reflected without restarting Tomcat?

如果我不同意其他人回答它是关于简化:

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

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