基本設置:角1.5 SPA Apache的2.4通過REST API同樣來自於Apache 2.4的支持提供服務。刷新緩存角SPA
我已閱讀一切可以利用的技術,允許一些應用程序代碼在服務器上更改後SPA是新鮮和更新。
解決方案通過HTTP caching(HTTP報頭)來或緩存無效(版本例如文件名)技術。它們都基於網絡瀏覽器提出獲取資源的請求,並具有一些機制來了解內容是否需要更新或可以從緩存中提供。
SPA的主要問題是資源請求不是通常在初始化負載後進行的,因爲Web應用程序在瀏覽器中很快加載並且只有XHR調用後端纔會啓動以加載數據。在很多情況下,用戶在很長一段時間內沒有刷新文件很不方便,因此不會關閉該選項卡。
最難的問題是index.html
文件(see this post)。這是第一次在瀏覽器中加載應用程序時才被調用,然後永遠不會被請求。只有手動瀏覽器頁面重新加載可以爲該文件啓動第二個請求。
所有的JavaScript和CSS文件是爲index.html
請求後加載,然後永遠不會重新加載。只有index.html
的新請求才能刷新它們。
如果在初始加載後沒有獲得index.html
的請求,緩存控制標頭或緩存清除策略如何在服務器上更改時允許javascript或css文件刷新?
我這個問題,我受影響的方法有兩種:
的REST API必須與Web應用程序兼容。如果我在API中引入了重大更改並且用戶沒有重新加載頁面,則可能會導致保留數據不一致的錯誤。
由於HTML文件可以重新加載,而javascript或css文件沒有這樣做,可以提供不兼容的html文件(例如缺少CSS類定義或範圍引用)。
我發現的唯一的真正的解決方案是:
- this answer
- 在每一個XHR調用當前部署的版本檢查,並檢查它是否在瀏覽器中加載的版本diferent ,
但:
- 當絕大多數情況下每個人都會使用相同的版本時,保留所有版本(數據庫,API,服務器代碼,客戶端代碼)似乎有很多開銷。
- 這將是非常不友好的用戶,有一條消息,告訴整個應用程序將被重新加載和丟失未保存在後臺的所有數據。考慮填寫表格並在按下保存之後被強制重新輸入所有數據。
我錯過了每個人如何處理Angular緩存?
你有沒有發現這一個一個解決方案,我在確切的問題運行減去我使用淘汰賽沒有棱角 –