2015-01-20 132 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,我会推荐使用它,因为这样可以让你做你想做的事。