2017-02-21 76 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在客戶端執行,您不需要重新加載服務器。這是因爲您的服務器配置在每次客戶端請求時都會讀取磁盤上的文件。如果你有任何緩存系統,你需要刷新它才能看到你的修改後的文件下載到客戶端。