Что должен видеть пользователь в веб-приложении, управляемом базой данных, когда база данных недоступна?
Если веб-приложение использует базу данных для обслуживания динамического содержимого и по какой-либо причине это содержимое недоступно (сервер базы данных и т. Д.), Какой метод предпочтительнее для обработки этого сценария?
- Перенаправить посетителя на пользовательскую страницу 404?
- Отобразить страницу в любом случае, но включить какое-то сообщение об ошибке, где содержимое будет иначе?
- Показать связанную страницу со статическим содержимым?
- Другой?
Я понимаю, что должна происходить правильная регистрация ошибок, а также уведомление веб-мастера и / или системного администратора. В основном меня интересуют лучшие практики того, что должен увидеть конечный пользователь в этой ситуации.
4 ответа
#3, если вы можете (например, снимок динамического содержимого, сделанного каждые 20 минут), но сделайте кристально ясным, что это статическое содержимое на
# 2, если вы не можете, если ошибка понятна человеку, а не буквально переиздана трассировка стека исключений из Java или что-то подобное.
Что бы вы ни делали, НЕ возвращайте 404 - ваше приложение может работать неправильно, но вы не хотите создавать впечатление, что URL-адрес неправильный. Помимо всего прочего, это может оказать негативное влияние на SEO вашего сайта.
Если вы собираетесь вернуть какой-либо HTTP-статус, отличный от 200, то я бы рекомендовал 503 "Service Unavailable". Это больше указывает на временную ошибку приложения, чем на ошибку HTTP-запроса.
Я думаю, что это зависит от того, насколько привязано к базе данных содержание всей страницы. Например, в наших веб-приложениях, если база данных не работает, то нет способа аутентификации; Нашим единственным средством было бы настраиваемое окно с сообщением об ошибке: "У нас сейчас проблемы; зайдите позже ".
Сейчас; если динамический контент похож на цитату дня поверх статического файла, то вместо контента появляется простое сообщение об ошибке; или упущение динамического контента все вместе было бы уместно.
Так; это зависит от того, какую службу предоставляет страница, и может ли она предоставить что-либо полезное без серверной части.
Я думаю, что № 3, вероятно, лучший, но не всегда выполнимый. Если это невозможно, лучше всего подойдет какое-то "Технические трудности, пожалуйста, подождите..." (очевидно, вы можете изменить формулировку на что-то лучше). Просто избегайте печатать ERROR: ERR_123/SIGSEGV! (или что-то в этом роде) большими красными буквами. Это заставляет пользователей думать, что ваше приложение сломано, и они могут не вернуться.