2015-01-20 150 views
1

我一直在研究一個具有自定義錯誤頁面的Spring MVC應用程序,這些頁面以HTML註釋的形式返回一個通用錯誤消息和堆棧跟蹤。我目前正在使用HTML5的Appcache開發此應用程序的離線功能。我的清單是這樣的:Appcache和自定義錯誤頁面

CACHE MANIFEST 
CACHE: 
... my explicit entries (not relevant) ... 

FALLBACK: 
... some fallback entries (not relevant) ... 
<!-- This next line is relevant --!> 
/pageNotFoundOffline.html 

SETTINGS: 
prefer-online 

這是應該服務於先前緩存404頁,當用戶無法連接到服務器,問題是當錯誤發生時,它也成爲這個404頁,從而導致應用程序中已經實現的自定義錯誤頁面完全無用。

爲什麼我想這樣做?我希望每當用戶嘗試訪問我的應用程序中的任何頁面,並且請求失敗並出現404錯誤(或者因爲沒有可用的Internet連接或因爲服務器關閉),該用戶會被告知請求失敗,並且他或她正在被重定向到我們的離線功能,我也想通知用戶他或她成功到達我們的服務器,但發生了內部錯誤(通過自定義錯誤頁面)。

有沒有這個問題的解決方法?,我想完成的是緩存404頁面,只有當存在404例外和服務器返回的自定義錯誤頁面纔會被顯示。內部錯誤。

回答

0

恐怕這對於appcache來說是不可能的 - 回退會攔截所有的服務器錯誤。 specification for appcache說:「如果這導致重定向到具有其他來源(指示強制門戶)的資源,或者4xx或5xx狀態碼或等同物,或者如果存在網絡錯誤(但是如果用戶取消下載),則取而代之的是從緩存中獲取對應於後備名稱空間f的後備條目的資源,放棄這些步驟。「

如果你可以使用更現代的做事方式,Service Workers,我會推薦使用它,因爲這樣可以讓你做你想做的事。