簡體   English   中英

強制刷新不適用於Head JS

[英]Force refresh doesn't work for Head JS

通過Head JS加載腳本時,我無法使用Ctrl + F5(或同等功能)鍵盤快捷鍵來強制刷新內容。

腳本正確緩存,瀏覽器遵循從服務器發送的緩存指令(我使用的是IIS 7.5)。 但是與直接包含在標記中的腳本標簽不同,我無法覆蓋緩存並強制刷新通過Head JS加載的腳本。

我假設這是腳本動態加載方式的結果。 我可以忍受這種行為,因為強制刷新僅在開發過程中很方便,而且我知道可以強制從服務器檢索內容的其他方式。

我只是想知道是否有人可以解釋為什么會這樣?

更新資料

在Live中,這對我們來說從來都不是問題,因為靜態內容的緩存指令已正確設置。 這只是開發和質量檢查中的一個問題,可供我使用的選項是...

  • 將所有開發和質量檢查瀏覽器配置為從不緩存內容。
  • 針對Dev和QA環境配置靜態內容緩存指令的方式有所不同-本質上將MaxAge設置為很小的內容將始終過期。 僅在Live中設置正確的MaxAge值。

我選擇了第二個選項。

動態腳本加載不是頁面正確加載的一部分。 當您強制刷新時,瀏覽器將重新加載頁面以及其HTML和參考CSS文件中引用的所有資源,但是用head.js加載的腳本未在頁面內容中引用,並且瀏覽器無法找出該head.js將創建對其他資源的引用。 在創建這些引用時,瀏覽器不再刷新頁面,因此將應用常規緩存規則。

您可以通過將唯一的查詢字符串附加到URL jquery.js?random=437593486394強制重新加載腳本(例如jquery.js?random=437593486394 ),但這將禁用頁面所有加載的緩存,而不僅僅是強制刷新時。

這也是require.js的問題。 希望這些變通辦法之一也將適用於Head.Js

  • 如果使用Chrome,請打開“網絡”標簽上的開發人員工具面板,右鍵單擊並選擇“清除瀏覽器緩存”
  • 通過將日期時間戳添加到js資源的查詢字符串中來做一些“ Cache-busting”
  • 如果您使用的是IIS(看起來像您一樣)。 轉到網站的“ HTTP響應標頭”面板,單擊“設置通用標頭”,然后將“過期Web內容”設置為立即。

后者是我的開發機器的首選

IIS HTTP響應標題面板

我不會說它是動態的還是非動態的問題,當您注入腳本時,它仍然會導致瀏覽器發出HTTP請求並應用其適用的任何緩存邏輯。

就像上面提到的,如果您不希望腳本被緩存為..dynamic或static,這沒關系,通常必須以查詢字符串的形式附加時間戳。

如果您只想查看所做的更改是否有效,請在瀏覽器中強制刷新...通常是CTRL + F5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM