簡體   English   中英

Microsoft Edge 瀏覽器緩存中的 RESTful Angular 應用

[英]RESTful Angular app in Microsoft Edge Browser Caching

我正在開發一個使用 Angular.js 的 Web 應用程序,該應用程序由 RESTful API 提供服務。 在開發階段,我使用我最喜歡的瀏覽器 Chrome,但我只是在 Edge 中運行了一些測試並取得了一些有趣的發現。

我注意到調用 RESTful 服務器的結果似乎返回了不正確的數據。 經過仔細檢查,我意識到這是由於 Edge 瀏覽器從 Cache 加載結果,而不是調用以獲取最新和正確的結果。 更重要的是,我意識到我可以從我的 Angular 應用程序文件中刪除整個功能,而 Edge 似乎沒有抱怨!

有問題的角函數:

$http.get(frontbaseurl+'/users/auth_user.json').then(function(response){})

我已經閱讀了一些對 SO 問題的回答,這些回答提出了各種強制 Edge 不緩存結果的方法(例如,向 get url 添加數據戳),但這聽起來很糟糕,在我的情況下它無論如何都不起作用。

我簡直不敢相信我的發現。 我的編碼人員想聳聳肩,把這歸結為 MS 的另一場災難,但我不能忽視一個事實,一些不幸的人可能別無選擇,如果他們使用我的網絡應用程序可能會遇到錯誤。

還有其他人經歷過嗎?

作為一名 Web 開發人員,我非常感謝瀏覽器放置大量緩存以避免對我的服務器進行不必要的請求,並幫助我的用戶獲得更快、更好的體驗。

很多技術可以請求瀏覽器停止緩存,但是請不要那樣做! 緩存非常有用,並且有一些聰明的方法可以防止瀏覽器使用舊內容。

我已經閱讀了一些對 SO 問題的回答,這些回答建議了各種強制 Edge 不緩存結果的方法(例如,將數據戳添加到 get url ),但這聽起來很笨拙,在我的情況下無論如何它都不起作用。

我相信你錯過了這里的重點。 您沒有將數據戳添加到get url 您需要將其添加到文件 url

錯誤的:

$http.get(frontbaseurl+'/users/auth_user.json?v=20160510').then(function(response){})

對:

<script src="/path/to/services.min.js?v=20160510"></script>

將查詢字符串添加到文件名應該是構建操作的一部分。

也許試試這個:

$http.get(frontbaseurl+'/users/auth_user.json?' +some random number).then(function(response){})

隨機數必須在每次調用中改變

或者

$http.get(frontbaseurl+'/users/auth_user.json?' ,{cache:false}).then(function(response){})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM