应用缓存和自定义错误页面



我一直在开发一个具有自定义错误页面的Spring MVC应用程序,这些页面返回一般错误消息和堆栈跟踪作为HTML注释。我目前正在使用HTML5的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(因为没有可用的互联网连接或因为服务器已关闭)时,该用户都会被告知请求失败,并且他或她被重定向到我们的离线功能, 我还想通知用户何时成功到达我们的服务器,但发生了内部错误(通过自定义错误页面)。

这个问题有工作吗

?,我想完成的是仅在存在 404 异常时才提供缓存的 404 页面,并在出现内部错误时显示服务器返回的自定义错误页面。

怕使用appcache是不可能的-回退会拦截所有服务器错误。appcache 的规范说:"如果这导致重定向到具有另一个来源的资源(指示强制门户),或 4xx 或 5xx 状态代码或等效代码,或者如果存在网络错误(但如果用户取消下载,则不会),则改为从缓存中获取与回退命名空间 f 对应的回退条目的资源。中止这些步骤。

如果你可以使用更现代的做事方式,服务工作者,我建议使用它,因为这会让你做你想做的事。

最新更新