【问题标题】:In a database driven web app, what should the user see when the database is unavailable?在数据库驱动的 Web 应用程序中,当数据库不可用时用户应该看到什么?
【发布时间】:2009-11-04 04:26:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: web-applications http-status-code-404 data-driven


    【解决方案1】:

    #3 如果可以的话(例如,每 20 分钟拍摄一次动态内容的快照),但要清楚地表明它是截至

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

    【讨论】:

    • 目前我正在使用带有通用“...连接服务器时出错...”消息的 #2 来代替内容。正如您和其他人所说,#3 可能是最好的,但我真的没有资源或时间来实施它。所有这些答案都很棒。我默认这个答案是“最”的答案,因为它是第一个并且得票最多。谢谢大家。
    • 只是不要使用“错误”这个词,它有一个负面的、有缺陷的声音。这可能是真的,但这是糟糕的公关。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • +1。关于身份验证的要点也可能被关闭。有问题的应用程序确实有一个管理部分,用于管理公众看到的相同内容,所以我肯定需要考虑这一点。谢谢。
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-23
        • 2012-04-03
        • 1970-01-01
        • 2010-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多