2016-08-24 82 views
0

我在Chrome中遇到了一個非常奇怪的行爲,我的SPA。我正在使用前端AngularJS運行本地IIS服務器。我正在使用Gulp來緩存我所有的Javascript和CSS文件。最近我發現我的網站正在加載舊的HTML文件,這是由於角度$templateCache,所以我用gulp-angular-templatecache來解決這個問題,但隨後出現了一個新問題。Chrome繼續緩存我的舊頁面,直到我點擊刷新按鈕

當我打開我的電腦時,啓動IIS服務器並通過在URL欄中輸入localhost來加載我的應用程序,Chrome從緩存中加載所有內容,以便獲取舊的JS,CSS和HTML文件(我看到了Chrome正在加載一箇舊的index.html文件),但如果我去其他的路線,如localhost/mainPage它加載我所有的新文件,一切按預期工作。之後,如果我再次訪問localhost,則舊網站將再次從緩存中加載!

我不是專家,但它似乎是一個非常奇怪的行爲。這是Chrome的錯誤嗎?是Chrome的故障還是我的AngularJSSPA

在我Web.config我有這樣的禁用的index.html緩存:

<!-- Disable index.html cache --> 
    <location path="index.html"> 
    <system.webServer> 
     <staticContent> 
     <clientCache cacheControlMode="DisableCache" /> 
     </staticContent> 
    </system.webServer> 
    </location> 

這最大化緩存時間爲所有其他文件:

<system.webServer>  
    <staticContent> 
     <!-- Cache busting for 1 year (max recommended value) --> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="365.00:00:00" /> 
    </staticContent> 
</system.webServer> 

回答

0

有以下兩種情況:

  • 開發時,應該使用disable cache選項,Googl Chrome提供。爲此,請打開Devtools(Chrome菜單>更多工具..> Devtools),轉至網絡選項卡並選中說明禁用緩存
  • 當發佈到生產時,應該在縮小文件上使用任何文件修訂工具。這附加一個哈希到文件的名稱(如scripts.472bc7.js),以避免與最終用戶的瀏覽器緩存問題
+0

我已經附加一個散列到每個文件(cache-bust),這就是問題,chrome不斷收到和舊的HTML文件 – Andres

相關問題