Pull to refresh

JavaScript и индексация в Яндекс

Доброго времени суток, уважаемые хабрчане!

Уже давно известно, что Яндекс не достаточно хорошо обрабатывает контент, создаваемый javascrip'ом. Точнее он его не индексирует.

Зная это, web-программисты, следуя рекомендациям seo-спрециалистов, важный для продвижения контент выдают только посредством загрузки отдельной страницы. То есть для получения нового содержимого осуществляется переход по ссылке.

Мне кажется, это не совсем хорошая практика. Как-никак мы живём в 21-м веке, а ajax стал обязательной технологией для любого хоть сколько значимого проекта. Как тут быть? С одной стороны — ограничения SEO, с другой стороны — желание сделать проект достаточно живым и интересным.


Решений данной проблемы может быть несколько.

1. Следовать ограничениям SEO
В этом случае мы возвращаемся к старой модели html: один запрос — одна страница. И даже если из всего содержимого новостного портала нам нужно получить только контент одной-единственной статьи, то мы всё равно осуществляем полную загрузку всего содержимого, включая рекламу, анонсы и прочую нечисть.

2. Забить на SEO
Я не иронизирую. На самом деле в некоторых случаях это вполне подходящее решение. Например, если речь идёт об админке, то SEO нам как собаке пятая нога. Иногда целесообразно даже отдельные проекты или их части реализовать чисто на ajax'е. В конце концов если сайт уже раскручен и вы добавляете функционал (новый сервис), то подобное решение будет по достоинству оценено ассесорами Яндекса. Тем, кто искренне убеждён, что Яндекс — это машина в чистом виде, я предлагаю прочитать книгу «Эффективное продвижение сайтов в «Яндексе». Там вообще много чего полезного написано.

3. Найти золотую середину
Как это сделать? Это самое интересное.
Распишу по пунктам план действий.

1) Страницу мы генерируем ровно в том виде, как её нужно отдать Яндексу. Это делается для правильной индексации, чтобы Яша был доволен и сыт.

2) Мы должны реализовать небольшую js-библиотеку, предназначением которой будет изменение ссылок на сгенерированной странице. Например, если у нас есть ссылка вида site.ru/news (условно будем называть такой адрес статическим), то мы её должны поменять на site.ru/#news (а такой адрес условно назовём динамеческим). Причём менять можно не все ссылки, а только те, которым мы заранее присвоили определённый класс, например, class=«dinamic».

3) Обратившись по статическому адресу site.ru/news мы должны получить тот же самый результат, что и при клике по динамическому адресу — с той лишь разницей, что в последнем случае контент мы должны получить быстрее. Как это сделать?
Чтобы не делать двойную работу нужно реализовать php-шную функцию генерации контента. В одном случае эта функция будет использоваться при обработке статического адреса, в другом случае — при обработке ajax-запроса.

Дабы не раздувать статью реализацию подобного решения приводить не буду. Если будет интерес со стороны читателей, напишу отдельную статью по этому поводу.

4. Sitemap
Напоследок хочу сказать, что есть ещё одно решение, чем-то похожее на предыдущий пункт, — использование sitemap, то есть карты сайта, которую обычно прячут куда подальше. Надо смотреть правде в глаза — люди пользуются картой сайта лишь в исключительных случаях. Да и то это скорее всего исключительные люди.
Решение sitemap подразумевает, что вы не заморачиваетесь с подменой ссылок. Для обычного пользователя с включенным javascript'ом контент будет доступен, т.к. он будет динамически погружаться. Но при отключенном javascript'е контент увидит скорее всего только поисковик, т.к. он-то будет лазить везде и найдёт и сам sitemap, и всё содержимое, на которое он ссылается.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.