-2

如果 Web 应用程序依赖于数据库来提供动态内容,并且该内容由于某种原因(数据库服务器停机等)不可用,那么处理这种情况的首选方法是什么?

  1. 将访问者重定向到自定义 404 页面?
  2. 仍然显示该页面,但包含某种错误消息,否则内容会出现在哪里?
  3. 显示具有静态内容的相关页面?
  4. 其他?

我了解应该进行正确的错误记录以及通知网站管理员和/或系统管理员。我最感兴趣的是最终用户在这种情况下应该看到的最佳实践。

4

4 回答 4

4

#3 如果可以(例如,每 20 分钟拍摄一次动态内容的快照),但要清楚地表明它是截至 <time> 的静态内容,并且会在系统问题解决后立即刷新。

#2 如果你不能,只要错误是人类可读的,而不是从 Java 或类似的地方重新打印异常的堆栈跟踪。

于 2009-11-04T04:29:12.910 回答
4

无论您做什么,都不要返回 404 - 您的应用程序可能无法正常工作,但您不想给人以 URL 不正确的印象。除此之外,这可能会对您网站的 SEO 产生负面影响。

如果您要返回 200 以外的一些 HTTP 状态,那么我建议您使用 503“服务不可用”响应。这更多地表明应用程序存在临时故障,而不是 HTTP 请求出现问题。

于 2009-11-04T04:59:24.433 回答
3

我认为这取决于整个页面的内容与数据库的关联程度。例如,在我们的 Web 应用程序中,如果数据库关闭,则没有身份验证方法;我们唯一的办法是自定义错误屏幕,大意是“我们现在遇到问题了;稍后再停下来'。

现在; 如果动态内容类似于大多数静态文件之上的每日报价,则使用简单的错误消息代替内容;或全部省略动态内容是合适的。

所以; 这取决于页面提供什么服务,以及它是否可以在没有后端的情况下提供任何有用的东西。

于 2009-11-04T04:32:01.190 回答
1

我认为#3可能是最好的,但并不总是可行的。如果这不可能,某种“技术困难,请稍候......”可能是最好的(显然,您可以将措辞更改为更好的措辞)。只是避免实际打印错误:ERR_123/SIGSEGV!(或类似的东西)用大红色字母。它使用户认为您的应用程序已损坏并且他们可能不会回来。

于 2009-11-04T04:35:33.920 回答