Любое дополнительное действие, которое требуется осуществить браузеру, снижает производительность и увеличивает время отклика. При проведении аудита PageSpeed Insights, вы можете увидеть рекомендацию: «Избегайте большого количества переадресций». Устранение данной ошибки позволяет существенно ускорить сайт и повысить его в ранжировании.
Что такое переадресации и зачем они нужны
Для выполнения переадресаций используются коды 301 и 302. К примеру, в заголовке HTTP ответ 301 будет выглядеть таким образом:
HTTP / 1.1 301 перемещено навсегда
Расположение: http://example.com/newuri
Тип контента: текст / HTML
Таким образом, браузер отправит юзера по URL-адресу, который указан в поле «Location». Информация, которая требуется для осуществления переадресации расположена в заголовках, а тело ответа, как правило, остаётся пустым.
Ни код 301, ни код 302, на практике практически никогда не кэшируются. Исключения составляют случаи, когда другое прописано в дополнительных заголовках.
Стоит учитывать, что любое перенаправление будет замедлять работу пользователя, так как браузеру необходимо выполнить дополнительные действия. Если без этого обойтись невозможно — отдайте предпочтение стандартным кодам состояния 3xx HTTP. Это может потребоваться, чтобы привязать старый сайт к новому, или в случае, когда текущая версия страницы временно не работает.
Переадресация в HTTP
Переадресация URL-адресов — метод, позволяющий транице, форме или целому веб-приложению использовать более одного URL-адреса. HTTP-перенаправления могут использоваться для различных целей — временное перенаправление во время обслуживания сайта, постоянное перенаправление для поддержания работы внешних ссылок после изменения архитектуры сайта, страницы прогресса при загрузке файла, и так далее.
В HTTP перенаправление инициируется сервером путем отправки специальных ответов на запрос. Это ответы с кодом состояния 3xx. При их получении, браузер использует предоставленный новый URL-адрес и сразу же загружает его. В целом ряде случаев пользователь даже не замечает, что он был перенаправлен. Но снижение производительности может на себе ощутить.
По своей сути, все переадресации делятся на 3 типа:
- Перманентные переадресации. Они не имеют срока действия и предполагается, что будут происходить всегда. Такие перенаправления подразумевают, что оригинальный URL больше не должен использоваться, а приоритетным является новый. В поисковых ресурсах роботы сами инициируют обновление соответствующего URL-адреса ресурса в своих индексах. Наиболее частыми вариантами их применения являются ситуации, когда происходит реорганизация сайта.
- Временные переадресации. Коды временных переадресаций используются в случаях, когда вэб-страница не доступна по неизвестным причинам. К её постоянному местоположению получить доступ не удаётся, но он доступен из другого места. В этом случае можно использовать временное перенаправление. Роботы поисковых систем не запоминают новую временную ссылку. Временные перенаправления также используются при создании, обновлении и удалении ресурсов для представления временных страниц прогресса.
- Специальные переадресации. Они имеют свои два конкретные названия. 304(Not Modified) перенаправляет страницу локально сохраненную копию. 300(Multiple Choice) является перенаправлением вручную. Все возможные переадресации перечислены в теле страницы и пользователь может выбрать нужное именно ему.
В качестве альтернативного способа задать переадресацию, можно использовать тег <meta> и переадресации JavaScript с применением DOM. Если не доступен контроль или настройка сервера, можно создать страницу HTML с <meta> элементом и http-equiv атрибутом. Он должен быть интегрирован в refresh в <head> страницы. Именно его найдёт браузер при отображении.
Выглядит это таким образом:
- <head>
- <meta http-equiv=»refresh» content=»0; URL=http://www.example.com/» />
- </head>
В атрибуте content указывается, сколько времени браузеру стоит подождать прежде чем осуществить переадресацию. Данное значение нужно указывать равным 0.
Переадресация в JavaScript
Переадресации в JavaScript создаются путем установки значения для window.location. К примеру:
- window.location = «http://www.example.com/«;
Создать JS-переадресацию можно для любого рессурса, который поддерживает данную функцию. Это особенно актуально при работе с мобильными устройствами, когда пользователи набирают короткий адрес сайта. В данном случае убедитесь, что переход от http://example.com к https://www.example.com будет осуществляться в одну маршрутизацию.
Помимо прочего, можно установить и порядок приоритета переадресаций:
- HTTP-перенаправления всегда выполняются первыми, если страница не передаётся и не читается
- HTML переадресации ( <meta>) выполняются, если не было никаких перенаправлений HTTP.
- Переадресации JavaScript используются в качестве конечного аспекта и только в случае, если у пользователя включён JavaScript.
В идеале, один рессурс должен иметь только одно расположение и один URL. Но есть причины, когда хочется создать дополнительные имена для сайта. К примеру, несколько доменов, имеющих атрибут «www», либо без такового. Или адреса, которые будут быстро запоминаться. В таком случае, можно прибегнуть к псевдониму домена. Использовать для выполнения переадресации стоит один URL, который и является истинным.
Когда использование псевдонима является выгодным для сайта и вполне оправдано:
- Чтобы увеличить охват пользователей. Распространенный случай — когда сайт находится в домене www.example.com, при этом, доступ к нему существует через example.com. В этом случае настраиваются переадресации страниц example.com на www.example.com. Помимо этого, вы можете добавить транслитерацию, частые опечатки, которые допускаются при написании сайта или синонимы, по которым его могут искать.
- Переезд в другой домен. К примеру, компания была переименована. Логично предположить, что пользователи будут искать её не только по новому названию, но и по старому. Убрав возможность посещать сайт привычным способом, через старый вэб-адрес, вы потеряете большое количество своих пользователей.
- Принудительный HTTPS. Запросы к HTTP-версии вашего сайта будут перенаправлены на HTTPS-версию вашего сайта.
Чтобы увеличить производительность сайта, максимально снизьте число возможных переадресаций. Если обойтись без них не удастся — настройте их грамотно.