[AngularJs] 清除html快取

  預設Angular會在使用者瀏覽網頁時,在Route的導頁機制下,會將第一次取到的html下來暫存在Client端,這樣使用者在第二次在瀏覽相同的網址時,就不會向後端的Serve再r取一次html。除非使用者自行重整,或從Route最原始Url進入 例:Index#/ 將#/移除,從Index進入,則快取就會清空。

問題

  目前程式中有一功能,會根據挑選的條件而Render不同的html到Client,而該功能作完後要立即導到另一網頁呈現內容。此時該網頁會因前一次的瀏覽而無法向Server取最新的html。根據此問題若Render html的方式是在Client作,是不會有此問題,但基於某些必要的原因,所以需在Server Render Html。


解決方法


Route的導頁機制,每次導頁會觸發$routeChangeStart事件,所以可以在此事件根據某些條件根快取清除
作法如下:
1.先設定一個靜態變數
image
2.換頁時,告知下一個route change要清除快取
image
3.$routeChangeStart事件判斷,是否有下一個(next)route及flag是否為true,則清除下一個瀏覽的Route快取。ps:也可以直接使用removeAll清空全部的快取
image

參考來源

http://opensourcesoftwareandme.blogspot.tw/2014/02/safely-prevent-template-caching-in-angularjs.html

這個網誌中的熱門文章

IIS 設定只允許特定IP進入