2014-02-11 33 views
7

我從Eclipse轉移到Jdeveloper。我有一個奇怪的問題,我能夠解決但無法理解。只要我使用代理,HTML中的更改不會反映出來

每當我在Jdeveloper的web項目中對HTML進行任何更改時,當我再次運行HTML時,這些更改都不會反映出來。舊網頁不斷出現在網頁瀏覽器中。相同的源代碼。相同的CSS/JS。我發現只要在我的Web瀏覽器中有代理設置,更改就不會反映出來。但是,如果我關閉了代理,則HTML中所做的更改也會反映出來,即網頁會顯示上次所做的更改。

通過代理設置我的意思是放置在以下 窗口代理設置 - >開始菜單 - > Internet選項 - >連接 - >局域網設置 - >代理服務器

我試圖運行在谷歌所顯示的網址Chrome,Firefox和Internet Explorer。只要Web瀏覽器使用代理,HTML中所做的更改不會再次顯示。

在Eclipse Juno中,我只需清理Tomcat的目錄即可獲得反映的更改。

任何人都可以解釋爲什麼會發生這種情況?

回答

5

Web服務器返回HTTP頭與每個響應,通常這些頭指定響應可以緩存多長時間。代理服務器讀取這些頭文件並在他們再次看到相同的請求時作出決定 - 無論是將該請求再次傳播到服務器,還是僅僅返回緩存的響應副本。

您可以修改服務器的配置,以便下次告訴代理服務器不要緩存頁面。但是,某些代理服務器配置不當或損壞,並且會緩存它們不應緩存的頁面。

對於這些情況,一個可行的醜陋解決方案是在您更改JS和CSS文件時更新它們。例如,如果您的index.html文件包含index.css和index.js,並且您對index.js進行了更改,則可以將更改後的文件另存爲index.2.js,並將標記更改爲index.html文件從現在起指向index.2.js。

這有點激烈,但它的工作原理。最簡單的解決方案是使用Shift-F5而不是F5(在瀏覽器中)刷新頁面。這會告訴瀏覽器儘可能強制刷新所有緩存頁面。

3

這似乎與您的代理服務器類型綁定。有幾種代理服務器類型,其中之一是「Caching Proxy Server」。其中,如果有許多用戶連接到它,允許將靜態頁面本地存儲在服務器上,以便來自客戶端(您)的重複請求。當您更改代理時,由於您沒有成爲活動客戶端,或者您是新用戶,因此很可能只是向您發送更新的副本。

我假設您正在構建的新軟件中的內容正在預存保存的頁面名稱,因爲Eclipse Juno正在生成實時屏幕,繞過了緩存的服務器選項。

相關問題