2016-03-23 56 views
1

我正在處理角js應用程序,它是一個單頁應用程序,我們正在使用路由來切換視圖。所有的文件(stylesheets和javascripts)只有在索引頁第一次被打到時才加載一次,並且假設我在樣式表或javascript文件之一中進行了更新,那麼它將使用舊版本的文件而不是更新的文件。防止角js應用程序中的緩存

我想強制客戶端瀏覽器採取最新的文件,只要服務器文件中有一個更新,而不需要從緩存中取出而無需刷新頁面(index.html)本身。

任何幫助,將不勝感激。

+0

谷歌緩存破壞,也看到這個http://stackoverflow.com/questions/9692665/cache-busting-via-params –

回答

0

如果你的目標是要實現緩存和適當的資源重新驗證,那麼我建議您使用以下標題:

Cache-Control: max-age=0, must-revalidate 
ETag: 'some generated value based on the content' 

在這種情況下,瀏覽器總是會發送請求,檢查ETag的值,如果ETag的已經改變,那麼服務器會發送新的內容,如果沒有的話將與狀態碼:304未修改

如果你已經部署你的網站上的生產和NE現在編輯在無效用戶的瀏覽器現有的緩存,然後讀什麼添建議:link

0

您可以防止在角js文件的緩存在頁面中使用了,您已經定義了不同的URL的狀態cache: false參數。

$stateProvider.state('login', { 
     url: '/yourState', 
     cache: false, 
     templateUrl: 'yourTemplate.html', 
     controller: 'yourController as yourCtrlObj' 
    }); 

在狀態參數設置cachefalse,一旦網頁獲取加載相應頁面中的所有文件將被重新加載。在這裏我給出了一個例子,使用controllerAs語法角js