2009-11-04 87 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

相關問題