2017-08-02 74 views
0

我正在使用AngularJS 1.5.8構建我的web應用程序的客戶端。我經常遇到問題,因爲用戶沒有Web應用程序客戶端的最新版本。有沒有簡單的方法來執行熱角度的應用程序重新加載,以便我的用戶始終擁有最新版本? (我正在尋找一個websockets的替代方案)AngularJS應用程序在生產中熱重新加載

+0

可以只是做一些像Ajax-Pings,並在客戶端創建一個彈出/警告? –

回答

0

您可以使用setInterval()通過對某個能夠返回最新版本的REST端點執行ajax調用,從您的客戶端Web應用程序中查詢您的服務器。如果該版本與您的「版本」變量不匹配,則強制重新加載應用程序。

0

在您加載所有.js文件的index.html文件中,您可以在每次執行新構建時增加的URL中包含一個版本號。這將強制用戶的瀏覽器從服務器重新加載庫,因爲URL不會完全匹配,從而有效地打破了緩存機制並阻止加載舊版本的代碼。

URL中的其他數據不會對應用程序產生任何影響。

<script src="js/app.js?v1.2.3"></script> 
    <script src="js/services.js?v1.2.3"></script> 
    <script src="js/filters.js?v1.2.3"></script> 
    <script src="js/directives.js?v1.2.3"></script> 
    <script src="js/components.js?v1.2.3"></script> 

你會做一個查找/替換爲v1.2.3v1.2.4上的下一個版本。

如果您使用的是類似webpack或其他構建管道/自動化工具的東西,可以通過在文件名中包含庫的散列值,然後動態更新index.html中的URL來自動執行此操作文件。當你看到像app.ad76c09743ef.js這樣的文件時,這可能是如何產生的。這確保了即使源代碼中的單個字符更改也會導致一個新的,唯一的哈希,以防止瀏覽器使用較舊的緩存值。

相關問題