2014-06-30 53 views
7

我一直在研究這個問題,這很簡單: 現代瀏覽器(鉻/ FF)是緩存的東西,HTML頁面等。
當你發佈一個新版本時,角度獲取這些模板。但是,由於瀏覽器提供這些頁面的緩存版本,而不是新的更新版本。防止角模板的瀏覽器緩存

我讀過關於如何實現這一目標.. 無「元」標籤爲我工作。(例如:Using <meta> tags to turn off caching in all browsers?)約2000條 的作品是手動管理的版本的唯一的事通過添加一些參數值http://bla.com?random=39399339。 然而,如果僅僅需要「清除緩存」(主要是在版本之間),這實際上很煩人,而且非常難以維護。

有沒有機會瀏覽器不提供簡單的控制方式來手動「清除緩存」。無論是在服務器還是客戶端?

P.S. 角模板使其更難管理。

+0

追加一些隨機數/文件散列/時間戳到的結束文件是我一直在做的,我同意這很煩人。或者,您可以在服務器提供文件時設置緩存標題,以便它們永遠不會被緩存 – rob

+0

您選擇何種途徑來解決此問題? – Georgy

回答

0

這是有這麼多答案的問題,它取決於你的服務器等上......

  • 通常HTML文件沒有緩存
  • AngularJS後第一美其名曰緩存模板,使用$ (在應用程序運行)
  • templateCache服務可以使用html2js與咕嚕或一飲而盡來編譯模板的一個JavaScript文件
  • 很多人不依賴於客戶端緩存,ETag的,等等,並添加版本,哈希,後綴和/或靜態資源的前綴es uri
+1

不幸的是,靜態HTML文件**通常被**緩存。 – mirabilos

0

我正在使用攔截器。如果請求包括URL的確切塊(路徑模板)我設置報頭「緩存控制」:「無緩存,必重新驗證」

$httpProvider.interceptors.push(function($q,ngToast) { 

     return { 
      request: function(config){ 
       if(config.url.includes('some_url_to_your_template')){ 
        Object.assign(config.headers,{"Cache-Control": "no-cache, must-revalidate"}); 

       } 

       return config; 
      } 
     } 
}) 
相關問題