2009-11-04 93 views
-3

如果Web应用程序依赖数据库来提供动态内容,并且无论出于何种原因(数据库服务器关闭等),该内容都不可用,那么处理此场景的首选方法是什么?在数据库驱动的Web应用程序中,用户应该看到数据库何时不可用?

  1. 重定向访问者到自定义404页面?
  2. 无论如何显示网页,但包含某种错误消息,否则内容将是?
  3. 显示包含静态内容的相关页面?
  4. 其他?

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

回答

4

#3如果可以的话(例如每20分钟拍摄一次动态内容的快照),但要清楚地表明它是静态内容,其时间为<时间>,系统问题解决后将立即刷新。

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

+0

目前,我正在使用#2与通用的“...连接到服务器时发生错误...”消息代替内容。正如你和其他人所说的那样,#3可能是最好的,但我并没有真正的资源和时间去实现它。所有这些答案都很棒。因为它是第一个,票数最多,所以我默认这个是“答案”。谢谢大家。 – Bryan 2009-11-04 05:36:46

+0

只是不要使用“错误”一词,它有一个负面的,有缺陷的声音。这可能是真的,但它是坏公关。 – FrustratedWithFormsDesigner 2009-11-05 04:46:31

3

我认为这取决于如何绑定到整个页面的内容数据库。例如,在我们的Web应用程序中,如果数据库关闭,那么就没有认证方法;我们唯一的度假胜地将是一个自定义错误屏幕,其效果是'我们现在有问题;以后再来“。

现在;如果动态内容与大多数静态文件之上的当天报价类似,那么只需一条简单的错误消息来代替内容;或者省略动态内容都是合适的。

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

+0

+1。关于身份验证的重要一点也可能会降低。这个应用程序确实有一个管理部分,用于管理公众看到的相同内容,所以我一定要考虑这一点。谢谢。 – Bryan 2009-11-04 05:28:22

1

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

4

不管你做什么,不要返回404 - 你的应用程序可能不能正常工作,但你不想给人的印象是URL不正确。除此之外,这可能会对您的网站的搜索引擎优化产生负面影响。

如果你要返回一些200以外的HTTP状态,那么我会推荐503“服务不可用”响应。这更多地表示应用程序出现临时故障,而不是HTTP请求出错。

+0

+1。关于搜索引擎优化和选择返回503的好点。 – Bryan 2009-11-04 05:24:23

相关问题