Как проверить ответ сервера
Когда мы открываем любую веб-страницу нужного нам сайта вместе с HTML кодом страницы сервер передает код статуса запроса и http заголовки. По коду статуса программы могут быстро определить все ли прошло успешно или, например, такой страницы нет на сервере. Заголовки содержат информацию для браузера, которая указывает как нужно обрабатывать страницу и что с ней делать.
Обычным пользователям эта информация ни к чему, но если вы администратор сайта или технический специалист, она может быть для вас очень полезной. В этой статье мы рассмотрим как выполняется проверка кода ответа сервера и http заголовков с помощью утилиты curl.
Что такое код ответа сервера?
Содержание
- 1 Что такое код ответа сервера?
- 2 Что такое http заголовки?
- 3 Проверка кода ответа сервера с помощью cURL
- 4 Проверка http заголовков с помощью Curl
- 5 Выводы
- 6 От чего зависит время ответа сервера
- 7 Нормальное время ответа — это сколько?
- 8 Коды ответов HTTP
- 9 Проверка 304 Not Modified
- 10 Что такое код статуса HTTP?
- 11 Проверить код ответа сервера страницы
- 12 Узнать код ответа сервера всех страниц сайта
- 13 Массовая проверка страниц на код ответа сервера
- 14 Проверка кода ответа сервера
- 15 Популярные коды статусов HTTP
- 16 Методы проверки ответа сервера
- 17 Какое должно быть время ответа сервера?
- 18 Как проверить скорость ответа сервера?
- 19 Критичная ошибка «Долгий ответ сервера» в Яндекс.Вебмастер. Что делать?
- 20 Как сократить время ответа сервера?
- 21 Выводы
Для нормальной работы различных программ, работающих по протоколу HTTP сервер возвращает не только текст страницы, но и трехзначный код, который позволяет определить результат запроса. С помощью этого кода можно не только описать какая ошибка возникла во время обработки, но и перенаправить пользователя на другую страницу, или же сказать, что страница не была изменена. Вот самые распространенные коды ответа сервера:
1xx — информационные:
- 100 — сервер принял первую часть запроса, можно подрожать передачу;
- 101 — нужно изменить протокол работы на более подходящий;
- 102 — на обработку запроса уйдет много времени, используется чтобы браузер не разрывал соединение раньше времени;
2хх — операция успешна:
- 200 — запрос выполнен успешно, отправляется для большинства запрашиваемых страниц;
- 201 — после выполнения запроса был создан ресурс;
- 202 — запрос принят, но еще не обработан;
- 203 — запрос выполнен успешно, но информация для ответа взята из прокси;
- 204 — запрос обработан, но контента для отображения нет;
- 205 — попросить пользователя ввести необходимые данные;
- 206 — запрос обработан, но передана только часть контента;
3xx — перенаправления:
- 300 — есть несколько страниц для этого запроса, например, на нескольких языках;
- 301 — страница навсегда перемещена по новому адресу;
- 302 — документ был временно перемещен;
- 303 — документ необходимо загрузить по указанному адресу с помощью протокола GET;
- 304 — документ не изменился с последнего запроса;
- 305 — нужно использовать прокси;
- 307 — ресурс временно перемещен на новый адрес.
4хх — ошибка в запросе:
- 400 — неверный запрос;
- 401 — необходимо аутентифицироваться;
- 403 — запрос принят, но у вас нет доступа;
- 404 — страница не найдена на сервере;
- 405 — используемый метод нельзя применять на сервере;
- 408 — время ожидания передачи запроса истекло;
- 410 — ресурс полностью удален;
- 411 — нужно указать длину запроса;
- 413 — запрос слишком длинный;
- 414 — URI запроса слишком длинная.
5хх — ошибка сервера:
- 500 — внутренняя ошибка сервера;
- 501 — нужная функция не поддерживается;
- 502 — прокси не может соединиться со шлюзом;
- 503 — сервер не может обрабатывать запросы по техническим причинам;
- 504 — прокси не дождался ответа от сервера;
- 505 — версия протокола HTTP не поддерживается.
Что такое http заголовки?
С помощью http заголовков клиент и сервер обмениваются информацией и командами между собой. Они используются для согласования метода, протокола, кодировки, языка и многих других параметров работы. Рассмотрим основные заголовки, которые будет отправлять сервер:
- Server — имя и версия веб-сервера;
- Date — дата осуществления запроса;
- Content-Type — MIME тип передаваемых данных, например, text/html, тут же задается кодировка;
- Connection — тип соединения, может быть closed — уже закрыто, или keep-alive — открыто для передачи данных;
- Vary — указывает при каких заголовках веб-сервер будет возвращать разные старины для одного URI;
- Set-Cookie — сохранить Cookie информацию для страницы;
- Expires — можно хранить страницу или ресурс в кэше до определенной даты;
- Cache-Control — настройка времени кэширования страницы браузером, а также разрешения на кэширования;
- ETag — содержит контрольную сумму для страницы, применимо для проверки кэша;
- Last-Modified — дата, когда страница последний раз была изменена;
Все это было вступлением, чтобы вы смогли понять что мы дальше собираемся делать, поскольку мы рассмотрим не только то как посмотреть заголовки и ответ сервера, но и то какими они должны быть для вашего сайта.
Проверка кода ответа сервера с помощью cURL
Чтобы увидеть только код ответа страницы достаточно выполнить такую команду:
curl -s -o /dev/null -w "%{http_code}" https://losst.ru
Или, если хотите, чтобы ответ выглядел более естественно:
curl -I https://losst.ru 2>/dev/null | head -n 1 | cut -d$' ' -f2
Страницы вернули 200, все в порядке. Но отправляет ли сервер редирект для нужных нам страниц? Если ваш сайт работает на https, то все запросы http должны перекидываться на https, также для любого сайта, все запросы на www домен должны перенаправляться на основной, или наоборот. Запросы на ip сайта тоже в идеале должны отправляться на основной домен. Проверка http ответа:
curl -I http://losst.ru 2>/dev/null | head -n 1 | cut -d$' ' -f2
curl -I https://www.losst.ru 2>/dev/null | head -n 1 | cut -d$' ' -f2
Все работает так, как нужно. Но смотреть код ответа сервера вряд ли понадобиться, намного интереснее проверка http статусов.
Проверка http заголовков с помощью Curl
Для проверки заголовков мы тоже можем использовать утилиту curl. Чтобы вывести заголовки страницы запустите ее с опцией -I:
curl -I https://losst.ru
Здесь отображается код ответа сервера, а также принятые http заголовки. Из них мы можем сделать такие выводы:
- Страница сгенерирована в nginx 1.10.2;
- Это обычная html страница (text/html);
- Размер страницы 102452 байт или 100 кб;
- Страница последний раз изменялась 18:13:12 (last_modified) это очень важный параметр для поисковых систем;
- Сервер будет выдавать разные версии страниц при изменении поля Accept-Encoding (Vary);
- Страница может храниться в любом кэше (public) на протяжении часа (expires);
Таким способом может быть выполнена проверка http заголовков для любой страницы или ресурса чтобы сразу определить все ли отправляется правильно. Например, посмотрим заголовки для изображения:
curl -I https://losst.ru/wp-content/uploads/2016/08/map-2.png
Мы можем видеть, что картинка будет храниться в кэше намного дольше (max-age) чем html страница.
Осталось проверить работают ли такие заголовки, как If-Modified-Since и If-None-Match. Первый позволяет выполнять проверку актуальности кэша по дате модификации, второй — по контрольной сумме поля ETag. Кэш очень важен, чтобы снизить нагрузку на ваш сервер. Если страница не изменилась, то сервер лишь сообщает что она не изменилась, отправляя код ответа 304, вместо передачи полного файла.
Конечно, вы можете использовать для этого онлайн сервисы, но работают они плохо и не всегда показывают верное значение. Поэтому пользуемся опять curl.
Проверка If-Modified-Since
Сначала запрашиваем нашу страницу для просмотра заголовков http, а затем копируем поле Last-Modified:
curl -I https://losst.ru
Теперь запрашиваем ее еще раз, но уже с заголовком If-Modified-Since: и ваша дата:
curl -I --header 'If-Modified-Since: Mon, 26 Dec 2016 18:13:12 GMT' https://losst.ru
В ответ вы должны получить не саму страницу, а только заголовок HTTP/1.1 304 Not Modified. Если так, значит проверка кода ответа сервера пройдена и все работает верно.
Проверка If-None-Match
Заголовок If-None-Match работает похожим образом, только здесь используется значение контрольной суммы кэша из поля ETag. Опять запросим нашу страницу и скопируем сумму:
curl -I https://losst.ru
Затем отправим полученную сумму с заголовком:
curl -I --header 'If-None-Match: "58615db8-19034"' https://losst.ru
И снова мы должны получить ответ 304, страница не изменена.
Проверка сжатия
Сжатие позволяет уменьшить размер передаваемых данных, но в то же время создает дополнительную нагрузку на сервер. Чтобы проверить поддерживает ли сервер сжатие gzip нужно отправить в запросе заголовок Accept-Encoding с параметром gzip:
curl -I https://losst.ru --header 'Accept-Encoding: gzip'
В ответе мы увидим поле Content-Encoding: gzip. Это будет означать, что сжатие используется.
Выводы
В этой статье мы рассмотрели как выполняется проверка ответа сервера и проверка http заголовков, это может быть очень полезно для аудита технической стороны вашего сайта, а также для решения определенных проблем. Надеюсь, изложенная в статье информация была вам полезной.
losst.ru
От чего зависит время ответа сервера
Скорость ответа сайта зависит от того, насколько быстро сервер обработает запрос и вернет результат. Основная причина слишком медленной реакции сайта — это перегрузка. Сервер не справляется с тем количеством запросов, которое к нему поступает. Чтобы уменьшить время ответа, нужно либо улучшить конфигурацию сервера, либо оптимизировать скрипты и запросы к базе данных. После такой оптимизации сервер будет тратить меньше времени на один запрос и успеет обрабатывать больше количество запросов за единицу времени.
Не существует универсального способа сократить время ответа сервера. В каждом случае должен быть индивидуальный подход к оптимизации нагрузки.
Нормальное время ответа — это сколько?
Чем меньше, тем лучше.
- До 300 миллисекунд — очень хороший результат, можно спать спокойно.
- От 300 до 700 миллисекунд — тоже неплохо, волноваться повода нет.
- Если время ответа вашего сайта приближается к секунде, или ещё выше — повод принимать меры.
Если вы этого ещё не сделали, то рекомендую прямо сейчас проверить скорость ответа вашего сайта. Результат может быть неожиданным для вас. Более того, рекомендую делать это регулярно. Для этого в нашем тестере предусмотрена возможность сохранять проверки. Достаточно один раз сохранить все страницы, которые вы желаете проверять, и далее проверять их мгновенно за 1 клик.
Помните, что скорость ответа влияет не только на восприятие сайта людьми (согласитесь, неприятно, когда при серфинге по сайту наблюдаются задержки при открытии страниц), но и на восприятие сайта поисковыми системами. Давно не секрет, что данный фактор оказывает влияние на ранжирование.
Коды ответов HTTP
Код состояния HTTP — это число, состоящее из трех цифр. Первая цифра означает группу, к которой принадлежит код.
Существуют следующие группы:
- 1xx — Информационные коды
- 2xx — Успешные коды
- 3xx — Коды перенаправлений
- 4xx — Коды ошибок клиента
- 5xx — Коды ошибок сервера
Проверка 304 Not Modified
Правильно настроенный сервер должен обрабатывать заголовок If-Modified-Since. Этот заголовок содержит дату и спрашивает, была ли изменена страница после этой даты. Если страница не была изменена, сервер должен вернуть ответ 304 Not Modified. При этом ответ содержит только заголовки и не содержит тело страницы. Это значительно экономит время и трафик при обходе вашего сайта поисковыми роботами.
Помимо этого, для корректной работы этой схемы сайт должен на каждый GET запрос возвращать заголовок Last-Modified, содержащий дату последнего изменения страницы. Браузеры и поисковые роботы сохраняют эту дату и при следующем запросе используют именно её для заголовка If-Modified-Since как бы спрашивая, изменилась ли страница с тех пор, нужно ли её скачивать заново.
calcus.ru
Что такое код статуса HTTP?
Код статуса HTTP (или код ответа сервера) — трёхзначное число, которое обозначает определенный статус запрашиваемой страницы.
Пример:
HTTP/1.1 200 OK , где
HTTP/1.1 — версии протокола,
200 — код успешного выполнения запроса.
Подробнее посмотреть значения кодов ответа сервера можно в этой статье.
В этой статье мы рассмотрим различные задачи, связанные с проверкой ответа сервера, а также поговорим о полезных инструментах, которые помогут нам решить их.
Проверить код ответа сервера страницы
Для того чтобы узнать код ответа сервера страницы, воспользуемся популярным онлайн сервисом. Mainspy позволяет определить ответ сервера по заданному урлу, что может быть полезно для определения наличия страницы или работоспособности сайта в целом.
Все довольно просто: необходимо вставить URL страницы и нажать кнопку “Проверить”.
Также можно воспользоваться проверкой ответа сервера в Яндекс Вебмастере , инструмент доступен только для подтверждённых сайтов.
Узнать код ответа сервера всех страниц сайта
Для пакетной проверки ответа сервера вышеизложенный сервис нам, к сожалению, не подойдет, поэтому воспользуемся десктопными приложениями Xenu или Spider, которые помогут пропарсить все страницы сайта и проверить код ответа всех страниц.
Получение статуса страниц в Xenu
В главном меню перейдем «File- Check URL». Введем адрес сайта и запустим проверку урлов на ответ сервера
Результат проверки статуса ответа сервера можно будет увидеть в колонке «Status».
Получение статуса страниц в Spider
Запускаем приложение, вводим URL. Результат смотрим в колонке “Статус”.
Массовая проверка страниц на код ответа сервера
Используется для проверки группы Url-ом нескольких сайтов или вполне конкретных страниц. В решении этой задаче нам поможет этот сервис. Вводим списком адреса.
Получаем результат.
Есть небольшое ограничение: максимальное количество Url-ов составляет 100 адресов.
Но это совсем не проблема. Я предлагаю вам решение, которое вы можете реализовать на вашем веб-сервере (необходимы небольшие знания PHP).
Рассмотрим функцию get_headers, которая возвращает все заголовки, посланные сервером в ответ на HTTP запрос.
Пример: Возвращает код ответа сервера заданного URL-а.
<!--?php ini_set('max_execution_time', 900); $url='//semantica.in/'; $code=get_headers($url); echo($code[0]); ?>
Немного доработав php код , мы сможем списком вводить URL-ы и получать коды ответа сервера:
<form action="index.php" method="POST"> <textarea name='url'></textarea> <button type="submit">Send</button> </form> <?php if(!empty($_POST["url"])){ $url = $_POST['url']; $links = explode("rn",$url); $count = count($links); for ($i =0; $count > $i; $i++) { $url = $links[$i]; $head = get_headers($url); $code = $head[0]; echo "$url $code"; echo "<br>"; } } ?>
Мы рассмотрели популярные задачи, которые могут возникнуть перед вебмастером. Надеюсь, что информация окажется для вас полезной.
semantica.in
Проверка кода ответа сервера
Вы можете проверить http-заголовки любой страницы сайта, и узнать какой код ответа выдает сервер. Это поможет вам узнать правильность настройки сервера, проверить редиректы и узнать скорость загрузки страницы.
Code | Код ответа сервера |
---|---|
100 Continue | Сервер удовлетворён начальными сведениями о запросе. Можно продолжать пересылать заголовки. |
101 Switching Protocols | Сервер предлагает перейти на более подходящий для указанного ресурса протокол. Список предлагаемых протоколов сервер обязательно указывает в поле заголовка Update. |
102 Processing | Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. |
200 OK | Успешный запрос ресурса. |
201 Created | В результате успешного выполнения запроса был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location. |
202 Accepted | Запрос был принят на обработку, но обработка не завершена. |
203 Non-authoritative Information | Успешный запрос ресурса, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. |
204 No Content | Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. |
205 Reset Content | Сервер обязывает сбросить введённые пользователем данные. |
206 Partial Content | Сервер удачно выполнил частичный GET возвратив только часть. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. |
207 Multi-Status | Сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. |
208 Already Reported | Члены привязки DAV уже были перечислены в предыдущей части (multistatus) ответа и не включаются снова. |
226 IM Used | Заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. |
300 Multiple Choices | По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. |
301 Moved Permanently | Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. |
302 Found | Запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. |
303 See Other | Документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. |
304 Not Modified | Клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. |
305 Use Proxy | Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. |
307 Temporary Redirect | Запрашиваемый ресурс короткое время доступен по другому URI (указывается в поле Location заголовка). |
308 Permanent Redirect | Запрашиваемый ресурс теперь постоянно находится в другом URI (указывается в поле Location заголовка). Данный код ответа имеет ту же семантику, что и код ответа 301 Moved Permanently, за исключением того, что агент пользователя не должен изменять используемый метод HTTP: если POST использовался в первом запросе, POST должен использоваться и во втором запросе. |
400 Bad Request | Запрос не понят сервером из-за наличия синтаксической ошибки. |
401 Unauthorized | Запрос требует идентификации пользователя. |
402 Payment Required | В настоящий момент этот код не используется |
403 Forbidden | Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе со стороны клиента к указанному ресурсу. |
404 Not Found | Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI. |
405 Method Not Allowed | Указанный клиентом метод нельзя применить к ресурсу. Сервер также должен передать в заголовке ответа поле Allow со списком доступных методов. |
406 Not Acceptable | Запрошенный URI не может удовлетворить переданным в заголовке характеристикам. |
407 Proxy Authentication Required | Запрос требует идентификации прокси-сервера. |
408 Request Timeout | Время ожидания сервером передачи от клиента истекло. |
409 Conflict | Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. |
410 Gone | Такой ответ сервер посылает, когда ресурс раньше был по указанному URI, но был удалён и теперь недоступен |
411 Length Required | Для указанного ресурса клиент должен указать Content-Length в заголовке запроса. |
412 Precondition Failed | Ни одно из условных полей заголовка запроса не было выполнено. |
413 Payload Too Large | Сервер по каким-то причинам не может передать запрашиваемый объём информации. |
414 Request-URI Too Long | Сервер не может обработать запрос из-за слишком длинного указанного URI. |
415 Unsupported Media Type | По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе. |
416 Requested Range Not Satisfiable | В поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. |
417 Expectation Failed | По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса. |
418 I’m a teapot | Этот код был введен в 1998 году как одна из традиционных первоапрельских шуток IETF в RFC 2324. |
421 Misdirected Request | Запрос был перенаправлен на сервер, не способный дать ответ. |
422 Unprocessable Entity | Сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка из-за которой невозможно произвести операцию над ресурсом. |
423 Locked | Целевой ресурс из запроса заблокирован от применения к нему указанного метода. |
424 Failed Dependency | Реализация текущего запроса может зависеть от успешности выполнения другой операции. |
426 Upgrade Required | Сервер указывает на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection. |
428 Precondition Required | Сервер указывает клиенту на необходимость использования в запросе заголовков условий, наподобие If-Match. |
429 Too Many Requests | Клиент попытался отправить слишком много запросов за короткое время, что может указывать, например, на попытку DDoS-атаки. Может сопровождаться заголовком Retry-After, указывающим, через какое время можно повторить запрос. |
431 Request Header Fields Too Large | Превышена допустимая длина заголовков. Сервер не обязан отвечать этим кодом, вместо этого он может просто сбросить соединение. |
444 Connection Closed Without Response | Сервер не вернул информацию пользователю и закрыл соединение. |
449 Retry With | Возвращается сервером если для обработки запроса от клиента поступило не достаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. |
451 Unavailable For Legal Reasons | Доступ к ресурсу закрыт по юридическим причинам, например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав. |
499 Client Closed Request | Клиент закрыл соединение, прежде чем сервер ответит на запрос. |
500 Internal Server Error | Внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса 5xx. |
501 Not Implemented | Сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. |
502 Bad Gateway | Сервер в роли шлюза или прокси получил сообщение о неудачном выполнении промежуточной операции. |
503 Service Unavailable | Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. |
504 Gateway Timeout | Сервер в роли шлюза или прокси не дождался ответа от вышестоящего сервера для завершения текущего запроса. |
505 HTTP Version Not Supported | Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP. |
506 Variant Also Negotiates | В результате ошибочной конфигурации выбранный вариант указывает сам на себя из-за чего процесс связывания прерывается. |
507 Insufficient Storage | Не хватает места для выполнения текущего запроса. Проблема может быть временной. |
508 Loop Detected | Обнаружено бесконечное перенаправление |
509 Bandwidth Limit Exceeded | Используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. |
510 Not Extended | На сервере отсутствует расширение, которое планирует использовать клиент. |
511 Network Authentication Required | Этот ответ посылается не сервером, которому был предназначен запрос, а сервером-посредником — например, сервером провайдера — в случае, если клиент должен сначала авторизоваться в сети, например, ввести пароль для платной точки доступа к Интернету. Предполагается, что в теле ответа будет возвращена Web-форма авторизации или перенаправление на неё. |
520 Unknown Error | Возникает когда сервер CDN не смог обработать ошибку веб-сервера. |
521 Web Server Is Down | Возникает когда подключения CDN отклоняются веб-сервером. |
522 Connection Timed Out | Возникает когда CDN не удалось подключиться к веб-серверу. |
523 Origin Is Unreachable | Возникает когда веб-сервер недостижим. |
524 A Timeout Occurred | Возникает при истечении таймаута подключения между сервером CDN и веб-сервером. |
525 SSL Handshake Failed | Возникает при ошибке рукопожатия SSL между сервером CDN и веб-сервером. |
526 Invalid SSL Certificate | Возникает когда не удаётся подтвердить сертификат шифрования веб-сервера. |
599 Network Connect Timeout Error | Ошибка таймаута — сетевые подключения. |
a.pr-cy.ru
Популярные коды статусов HTTP
Найти все возможные коды состояния HTTP для сервера вы можете в Википедии на этой странице. Я же рассмотрю лишь основные из них, с которыми наиболее часто сталкиваются вебмастера:
- 200 OK — запрос выполнен успешно. Если у вас при проверке отображается код ответа сервера 200, значит с этой страницей все хорошо.
- 301 Moved Permanently — мы уже встречались с этим вариантом в статье про 301 редирект. Он означает, что страница навсегда перемещена на другой адрес (URL). При этом передается почти весь ссылочный вес.
- 302 Moved Temporarily — запрашивая страница временно доступна по другому адресу.
- 404 Not Found — по указанному УРЛу ничего не найдено. Желательно создать на своем сайте эффективную страницу 404 ошибки, где пользователю отображалась бы соответствующая информация и рекомендации.
- 403 Forbidden — ограничение прав доступа к конкретной странице. Администратор сайта может специально закрыть от пользователей системные файлы или директории. Также это может свидетельствовать об ошибке установки прав на папку. Если для доступа к странице нужна аутентификация, то используется код статуса HTTP 401 Unauthorized.
- 408 Request Timeout — истекло время ожидания сервером. Бывает при загрузке пользователем слишком объемного файла на сайт.
- 500 Internal Server Error — код ответа сервера 500 означает любую ошибку, не описанную в других статусах 5xx.
- 502 Bad Gateway — свидетельствует о проблемах в работе сервера DNS, прокси или хостинг провайдера. Обычно траблы возникают с последним — можете смело писать в тех.поддержку и спрашивать почему не работает сайт.
- 503 Service Unavailable — данный код означает, что сервер недоступен по техническим причинам (будь то перегрузка или отключение на тех.обслуживание). С помощью параметра Retry-After можно указать рекомендуемое время повторения запроса. В любом случае поисковые роботы позже еще зайдут на ваш сайт.
- 504 Gateway Timeout — сервер не успел вернуть ответ в определенный лимит времени. Обычно это случается при резких больших нагрузках на сайт, к которым ваш хостинг не готов. Как вариант решения — купить сервер помощнее.
Данные коды состояния HTTP попадаются вебмастерам наиболее часто, остальные, как я уже сказал выше, смотрите в Wikipedia.
Методы проверки ответа сервера
Чтобы проверить код ответа сервера есть разные варианты, все зависит от ситуации — нужно ли вам определить статус страницы своего/чужого сайта, предпочитаете использовать онлайн сервисы или десктопные приложения, это будет массовая проверка кодов ответа сервера или одна страница и т.п. Рассмотрим поочередно все возможности.
Код ответа сервера в Яндекс.Вебмастере
Когда требуется проверить HTTP статус конкретной страницы своего сайта, можно воспользоваться Яндекс.Вебмастером. Переходите в соответствующий раздел панели либо по этой ссылке.
В строке ввода указываете URL, а справа выбираете тип поискового робота для захода на страницу. Через некоторое время отобразится разная служебная информация по запросу. К сожалению, проверить код ответа сервера в Яндекс можно только на своих подтвержденных проектах и только внутри панели вебмастеров. Регистрация и добавления сайта, понятно дело, занимает определенное время, поэтому, метод не самый быстрый и простой.
Сервисы проверки ответа сервера
Разных веб-проектов, позволяющих проверить ответ сервера достаточно много. Из наших больше всего внушает доверие следующие три варианта:
PR-CY
Среди множества SEO инструментов портала PR-CY нашлась нужная нам функция проверки заголовков сервера. Кроме самого статуса выводится некоторая дополнительная информация.
Checkmy
Онлайн сервис специально создан для определения кода ответа сервера. Поддерживается gzip сжатие, кириллические домены, имеется выбор User Agent’а, а также мобильная версия. Выглядит симпатично.
Mainspy
Если по каким-то причинам предыдущие варианты не сработали, попробуйте данный проект с инструментами вебмастера. Недостатком сайта можно назвать очень большое количество рекламы, хотя на работу это не влияет.
HTTP Status Code Checker
Англоязычных сервисов, где можно проверить ответ сервера еще больше. Один из первых в выдаче — httpstatus.io. Тут все предельно просто: вводите адрес страницы, выбираете (если нужно) дополнительные параметры запроса и кликаете Submit.
Server Headers Checker
Очень часто функцию проверки HTTP кода состояния страниц можно встретить на тематических SEOшных порталах или даже блогах. Инструменты от Seobook — отличный тому пример. Особенностью сервиса есть возможность исследования сразу нескольких страниц.
Netpeak Spider — программа проверки ответа сервера
Когда-то я уже рассказывал о полезном софте от Netpeak. Для решения текущей задачи нам пригодится их программа Netpeak Spider, которая позволяет анализировать внутренние страницы проекта. Помимо поиска битых линков, дубрей, выгрузки МЕТА тегов и работы со ссылками, с ее помощью можно узнать разные параметры страниц сайта (в том числе и код ответа сервера).
В отличии от большинства предыдущих онлайн сервисов программа позволяет оценить сразу множество страниц. Удобно для анализа своего сайта, однако не уверен, что она сможет «обработать» набор разных URL’ов из заданного списка. Скачавайте ее тут. Распространяется бесплатно.
HEADMasterSEO
Недавно на почту написал автор еще одной подходящей программы — HEADMasterSEO. Она хоть является платным продуктом, но имеет возможност проверки до 500 ссылок просто так. Этого, как правило, должно хватить для задач рядового вебмастера.
Софт позволяет получить статусы ответов сервера для большого списка линков, а также считывает ряд других параметров: редиректы, время отклика, ссылки в head, X-Robots-Tag и т.п. Результаты можно сортировать, фильтровать и экспортировать в CSV. Работает программа под Windows и Mac OS X. Честно, не совсем понимаю, что значит ограничее 500 урлов «за одну операцию» — если допускается повторный запуск программы с новыми ссылками, то это безусловно удобнее чем юзать Tor для онлайн чекеров или запускать по 50 линков.
tods-blog.com.ua
Какое должно быть время ответа сервера?
Рекомендуемые показатели следующие:
- Максимальный приемлемый показатель – до 200 мс.
- Оптимальный показатель – до 50 мс.
Практика показывает, что даже на виртуальном хостинге при выполнении рекомендаций по оптимизации времени отклика получается добиться показателей 20-30 мс.
Как проверить скорость ответа сервера?
Воспользуйтесь инструментом «Проверка ответа сервера» в Яндексе. В форме необходимо ввести адрес страницы (это может быть главная страница сайта или внутренняя), которую вы хотите проверить, и нажать на кнопку «Проверить».
Внизу формы появятся результаты проверки:
Здесь можно посмотреть код ответа сервера (должен быть 200 для существующих страниц), IP сайта, кодировку, размер страницы, а также – время ответа в мс. В нашем случае – это 23 мс.
Если время ответа сервера превышает 50 мс, лучше провести работы по оптимизации показателя. Если время превышает 200 мс, данные работы необходимо провести обязательно.
Критичная ошибка «Долгий ответ сервера» в Яндекс.Вебмастер. Что делать?
Если сервер отвечает очень долго, Яндекс посчитает это критичной ошибкой и выведет соответствующее уведомление в Яндекс.Вебмастере на вкладке «Диагностика сайта»:
Согласно информации в помощи Яндекс.Вебмастера, критичные ошибки могут привести к ухудшению ранжирования или полному исключению сайта из поиска.
Если вы получили уведомление об ошибке «Долгий ответ сервера», сразу принимайте меры:
- Проверьте время ответа сервера у страниц вашего сайта. При появлении ошибки в Яндекс.Вебмастере можно посмотреть список страниц, при загрузке которых возникли проблемы.
- Если время ответа сервера превышает 200 мс, следуйте рекомендациям по улучшению данного показателя. Они будут написаны ниже. После улучшения показателя нажмите на кнопку «Проверить» справа от ошибки (на скриншоте выше кнопка уже нажата).
- Если время ответа сервера не превышает 200 мс, напишите в поддержку Яндекс.Вебмастер. Возможно, уведомление получено по ошибке или в момент визита роботов наблюдались временные сбои. В любом случае, лучше разобраться в ситуации.
Как сократить время ответа сервера?
Данный показатель зависит от настроек сервера, количества запросов к базе данных при загрузке сайта, настроек самого сайта.
Чтобы уменьшить время ответа сервера:
- Сократите количество запросов к базе данных. Например, в шаблонах WordPress прописано несколько обращений к базе, в которых берется название сайта, адрес файла с CSS и другие параметры, статичные для конкретного проекта. Вместо запросов в шаблоне можно прописать данные вашего сайта, и количество запросов к базе сократится. Если вы не являетесь специалистом, то можете заказать услуги по ускорению сайта в компании 1PS.ru или у программистов-фрилансеров.
- Включите кеширование сайта. Это позволит значительно уменьшить время ответа сервера на WordPress и других системах управления. Например, в случае блога http://adblogger.ru/ пришло уведомление из Яндекса о долгом ответе сервера. Проверка показала, что сервер отвечает за 500-550 мс. Проблема оказалась в плагине кеширования, который не работал. После исправления ошибки время ответа сервера сократилось до 20-25 мс.
- Обратитесь к специалистам, которые помогут оптимально настроить ваш хостинг.
- В ряде случаев сервер отвечает долго из-за нехватки ресурсов. В этом случае поможет приобретение новых ресурсов или переезд на более мощное оборудование.
Выводы
Время ответа сервера – это важный показатель, который стоит отслеживать. При превышении рекомендуемых значений необходимо провести работы по оптимизации скриптов сайта и настроек хостинга. Чем быстрее грузится ваш проект, тем меньше пользователей будут уходить с него и тем выше могут быть позиции вашего ресурса в поиске.
Читайте также:
- Скорость загрузки сайта: как проверить и улучшить?
- Бесплатные сервисы, позволяющие сделать аудит сайта онлайн
adblogger.ru
Коды 2xx (успешно)
Код | Ошибка | Описание |
---|---|---|
200 | Хорошо |
Успешный запрос ресурса. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения. |
201 | Транзакция прошла успешно |
В результате успешного выполнения запроса был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location. Серверу рекомендуется дополнительно указывать в заголовке характеристики созданного ресурса (например, в поле Content-Type). Если сервер не уверен, что ресурс действительно будет существовать к моменту получения данного сообщения клиентом, то лучше использовать ответ 202. |
202 | Принято |
Запрос был принят на обработку, но обработка не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так процесс может оказаться очень долгим. |
203 | Неавторитетная информация |
Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. |
204 | Нет содержимого |
Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. |
205 | Сбросить содержимое |
Сервер обязывает клиента сбросить введенные пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно. |
206 | Частичное содержимое |
Сервер удачно выполнил частичный GET возвратив только часть. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. |
207 | Многостатусный |
Сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. |
226 | IM использовано |
Заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учетом указанных параметров. |
Коды 3xx (перенаправление)
Код | Ошибка | Описание |
---|---|---|
300 | Множественный выбор |
Затребованный URL обозначает более одного ресурса, и робот не смог однозначно определить, к какой странице URL относится (получен код 300 Multiple Choices). Исправьте заголовки или укажите ресурс правильно, и тогда робот сможет проиндексировать страницу. |
301 | Ресурс перемещен навсегда |
Документ уже не используется сервером, а ссылка перенаправляет на другую страницу (получен код 301 Moved Permanently). Так как пользователи не смогут увидеть подобные документы, показывать их в поиске не имеет смысла, и робот их не индексирует. Однако робот обязательно проиндексирует страницу, на которую установлено перенаправление. |
302 | Ресурс временно перемещен |
Запрошенный ресурс временно находится под другим адресом (получен код 302 Found). Так как пользователи не смогут увидеть подобные документы, показывать их в поиске не имеет смысла, и робот их не индексирует. Однако робот обязательно проиндексирует страницу, на которую установлено перенаправление. |
303 | Смотрите другой ресурс |
Запрошенный ресурс находится под другим адресом, и его следует запрашивать, используя метод GET (получен код 303 See Other). Если вы хотите, чтобы указанная страница находилась в поиске, она должна отвечать кодом 200. |
304 | Ресурс не изменялся |
Получен код 304 Not Modified. Если страница не изменилась с момента последнего обращения робота, рекомендуется выдавать этот код. Это ускорит индексирование и уменьшит трафик. |
305 | Следует использовать прокси |
Доступ к затребованному ресурсу может осуществляться только через прокси-сервер, указанный в заголовке Location (получен код 305 Use Proxy). |
307 | Временно перемещен |
Затребованный ресурс был временно переведен на другой адрес, который необходимо прописать в Location (получен код 307 Temporary Redirect). |
Коды 4xx (ошибка клиента)
Код | Ошибка | Описание |
---|---|---|
400 | Неверный запрос |
Запрос не может быть понят сервером из-за некорректного синтаксиса (получен код 400 Bad Request). |
401 | Неавторизованный запрос |
Для доступа к документу необходимо вводить пароль или быть зарегистрированным пользователем (получен код 401 Unauthorized). |
402 | Необходима оплата за запрос |
Внутренняя ошибка или ошибка конфигурации сервера (получен код 402 Payment Required). |
403 | Доступ к ресурсу запрещен |
Доступ к документу запрещен (получен код 403 Forbidden). Если вы хотите, чтобы страница индексировалась, необходимо разрешить доступ к ней. |
404 | Ресурс не найден |
Документ не существует (получен код 404 Not Found). Если вы удалили какой-то раздел сайта, можно с помощью robots.txt запретить роботу обращаться к нему. Если такой страницы на сайте никогда не существовало, игнорируйте эту ошибку, возможно, кто-то поставил некорректную ссылку на ваш сайт. |
405 | Недопустимый метод |
Метод, определенный в строке запроса (Request-Line), не дозволено применять для указанного ресурса, поэтому робот не смог его проиндексировать (получен код 405 Method Not Allowed). |
406 | Неприемлемый запрос |
Нужный документ существует, но не в том формате (язык или кодировка не поддерживаются роботом). Получен код 406 Not Acceptable. |
407 | Требуется идентификация прокси, файервола |
Необходима регистрация на прокси-сервере (получен код 407 Proxy Authentication Required). |
408 | Время запроса истекло |
Сайт не передал полный запрос в течение установленного времени и робот разорвал соединение (получен код 408 Request Timeout). |
409 | Конфликт |
Запрос конфликтует с другим запросом или с конфигурацией сервера (получен код 409 Conflict). |
410 | Ресурс недоступен |
Затребованный ресурс был окончательно удален с сайта (получен код 410 Gone). |
411 | Необходимо указать длину |
Сервер отказывается принимать запрос без определенного заголовка Content-Length (получен код 411 Length Required). Поправьте заголовки на своем сервере — тогда в следующий раз робот сможет проиндексировать страницу. |
412 | Сбой при обработке предварительного условия |
При проверке на сервере одного или более полей заголовка запроса обнаружено несоответствие (сбой или ошибка при обработке предварительного условия). Получен код 412 Precondition Failed. |
413 | Тело запроса превышает допустимый размер |
Сервер отказывается обрабатывать запрос потому, что размер запроса больше того, что может обработать сервер (получен код 413 Request Entity Too Large). |
414 | Недопустимая длина URI запроса |
Сервер отказывается обслуживать запрос, потому что запрашиваемый роботом URI (Request-URI) длиннее, чем сервер может интерпретировать (получен код 414 Request-URI Too Long). |
415 | Неподдерживаемый MIME тип |
Сервер отказывается обрабатывать запрос, потому что тело запроса имеет неподдерживаемый формат (получен код 415 Unsupported Media Type). |
416 | Диапазон не может быть обработан |
Сервер отказывается обрабатывать запрос, потому что значение поля Range в заголовке запроса указывает на недопустимый диапазон байтов (получен код 416 Requested Range Not Satisfiable). |
417 | Сбой при ожидании |
Сервер отказывается обрабатывать запрос, потому что значение поля Expect в заголовке запроса не соответствует ожиданиям (получен код 417 Expectation Failed). |
422 | Необрабатываемый элемент |
Сервер не в состоянии обработать один (или более) элемент запроса (получен код 422 Unprocessable Entity). |
423 | Заблокировано |
Сервер отказывается обработать запрос, так как один из требуемых ресурсов заблокирован (получен код 423 Locked). |
424 | Неверная зависимость |
Сервер отказывается обработать запрос, так как один из зависимых ресурсов заблокирован (получен код 424 Failed Dependency). |
426 | Требуется обновление |
Сервер запросил апгрейд соединения до SSL, но SSL не поддерживается клиентом (получен код 426 Upgrade Required). |
Коды 5xx (ошибка сервера)
Код | Ошибка | Описание |
---|---|---|
500 | Внутренняя ошибка сервера |
Сервер столкнулся с непредвиденным условием, которое не позволяет ему выполнить запрос (получен код 500 Internal Server Error). |
501 | Метод не поддерживается |
Сервер не поддерживает функциональные возможности, требуемые для выполнения запроса (получен код 501 Not Implemented). Этот ответ соответствует состоянию, когда сервер не распознает метод запроса и не способен обеспечить его для любого ресурса. |
502 | Ошибка шлюза |
Сервер, действуя в качестве шлюза или прокси-сервера, получил недопустимый ответ от следующего сервера в цепочке запросов, к которому обратился при попытке выполнить запрос (получен код 502 Bad Gateway). |
503 | Служба недоступна |
Возникла ошибка из-за временной перегрузки или отключения на техническое обслуживание сервера (получен код 503 Service Unavailable). |
504 | Время прохождения через межсетевой шлюз истекло |
Сервер, при работе в качестве внешнего шлюза или прокси-сервера, своевременно не получил отклик от вышестоящего сервера, к которому он обратился, пытаясь выполнить запрос (получен код 504 Gateway Timeout). |
505 | Версия НТТР не поддерживается |
Сервер не поддерживает или отказывается поддерживать версию HTTP-протокола, которая используется в сообщении запроса робота (получен код 505 HTTP Version Not Supported). |
507 | Недостаточно места |
Сервер не может обработать запрос из-за недостатка места на диске (получен код 507 Insufficient Storage). |
510 | Отсутствуют расширения |
Сервер не может обработать запрос из-за того, что запрашиваемое расширение не поддерживается (получен код 510 Not Extended). |
be1.ru