Что должен видеть пользователь в веб-приложении, управляемом базой данных, когда база данных недоступна?

Если веб-приложение использует базу данных для обслуживания динамического содержимого и по какой-либо причине это содержимое недоступно (сервер базы данных и т. Д.), Какой метод предпочтительнее для обработки этого сценария?

  1. Перенаправить посетителя на пользовательскую страницу 404?
  2. Отобразить страницу в любом случае, но включить какое-то сообщение об ошибке, где содержимое будет иначе?
  3. Показать связанную страницу со статическим содержимым?
  4. Другой?

Я понимаю, что должна происходить правильная регистрация ошибок, а также уведомление веб-мастера и / или системного администратора. В основном меня интересуют лучшие практики того, что должен увидеть конечный пользователь в этой ситуации.

4 ответа

Решение

#3, если вы можете (например, снимок динамического содержимого, сделанного каждые 20 минут), но сделайте кристально ясным, что это статическое содержимое на

# 2, если вы не можете, если ошибка понятна человеку, а не буквально переиздана трассировка стека исключений из Java или что-то подобное.

Что бы вы ни делали, НЕ возвращайте 404 - ваше приложение может работать неправильно, но вы не хотите создавать впечатление, что URL-адрес неправильный. Помимо всего прочего, это может оказать негативное влияние на SEO вашего сайта.

Если вы собираетесь вернуть какой-либо HTTP-статус, отличный от 200, то я бы рекомендовал 503 "Service Unavailable". Это больше указывает на временную ошибку приложения, чем на ошибку HTTP-запроса.

Я думаю, что это зависит от того, насколько привязано к базе данных содержание всей страницы. Например, в наших веб-приложениях, если база данных не работает, то нет способа аутентификации; Нашим единственным средством было бы настраиваемое окно с сообщением об ошибке: "У нас сейчас проблемы; зайдите позже ".

Сейчас; если динамический контент похож на цитату дня поверх статического файла, то вместо контента появляется простое сообщение об ошибке; или упущение динамического контента все вместе было бы уместно.

Так; это зависит от того, какую службу предоставляет страница, и может ли она предоставить что-либо полезное без серверной части.

Я думаю, что № 3, вероятно, лучший, но не всегда выполнимый. Если это невозможно, лучше всего подойдет какое-то "Технические трудности, пожалуйста, подождите..." (очевидно, вы можете изменить формулировку на что-то лучше). Просто избегайте печатать ERROR: ERR_123/SIGSEGV! (или что-то в этом роде) большими красными буквами. Это заставляет пользователей думать, что ваше приложение сломано, и они могут не вернуться.

Другие вопросы по тегам