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

StackOverflow https://stackoverflow.com/questions/1671663

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top