应用程序缓存和 404/500 页面
Posted
技术标签:
【中文标题】应用程序缓存和 404/500 页面【英文标题】:application cache & 404/500 pages 【发布时间】:2012-02-29 12:29:47 【问题描述】:我有一个类似这样的清单:
CACHE MANIFEST
# e4a75fb378cb627a0d51a80c1cc5684c2d918d93e267f5854a511aa3c8db5b1a
/a/application.js
/a/application.css
NETWORK:
*
FALLBACK:
/ /offline/redirect
问题是我的 /404.html 和 /500.html 页面(显然提供了 404 和 500 的响应代码)正在触发回退。它们的行为就像服务器离线一样。
我的问题有两个:
-
为什么 /404.html 会触发回退,而 /events 不会?
如何允许 /404.html 和 /500.html 不触发回退,同时仍然允许 /
触发它。
对于它的价值,我已经尝试过这个:
NETWORK:
*
/404.html
/500.html
...但是,由于这些页面是使用非 200 响应代码提供的,因此它会触发应用缓存错误回调并且不会保存缓存。
谢谢!
【问题讨论】:
FWIW,不仅仅是 404 和 500 页,它是任何返回 400+ 响应代码的路线/方法/动作/任何东西。因此,像 /teams/1241231 这样的“团队”不存在,应该呈现一个带有 404 代码的 404 页面 - 但它被 FALLBACK 拾取。 嗨。您终于设法为此找到解决方案了吗?我遇到了同样的问题:当我应该收到 403 时获取后备页面作为响应。建议的“总是返回 200”的解决方法对我来说不是解决方案。 【参考方案1】:什么对我有用:
从 NETWORK 声明中删除 * 重定向到 /404.html(等)而不是原地呈现。所以使用上面的例子:/teams/1241231
302 重定向到/404.html
,它返回一个 404 状态码。
【讨论】:
以上是关于应用程序缓存和 404/500 页面的主要内容,如果未能解决你的问题,请参考以下文章
服务器常见页面访问返回错误信息(404 500 400)表示啥意思