{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

"Подводный камень" при продвижении сайта на JavaScript

Если честно, мне дико лень придумывать какое-то необычное вступление для статьи, поэтому давайте сразу перейдем к мясу.

Делюсь опытом оптимизации сайта на JavaScript. Статья написана для обычных смертных. Столкнувшиеся с данной темой люди не найдут тут ничего нового.

Сойдет за обложку.

Введение

Год назад я решил переквалифицироваться и выучить пару новых технологий. Мой интерес пал в сторону бурно развивающегося JavaScript, и поэтому я, поддавшись модным течениям, решил сделать себе “реактивный” блог на Vue.js.

Я начитался разных ***но (плохих) статей в интернете, которые кричали, что поисковые системы прекрасно индексируют сайты, сделанные на JavaScript. Естественно, на кураже я выбросил в помойку свой любимый ModX (надеюсь, он простит) и написал свой простенький блог на Vue. Уже через 3 недели я потерял весь трафик из Яндекса….

Причина

Поисковая система, когда заходит на сайт, делает обращение к документу (странице) на сервере через запрос. Далее, сервер собирает страницу из каких-то данных и отдает документ, а поисковая система видит самый обычный HTML-код вперемешку с текстом. После, поисковая система (абстрактно) отбрасывает весь код и сканирует текст. Уже отталкиваясь от анализа просканированного текста, она делает выводы: о чем страница, и присваивает ключевые слова.

Но что же видит поисковая система, когда попадает на стандартный vue/react сайт и обращается к серверу за страницами? А ничего.

Просто пустая HTML-обертка, пришедшая с сервера без текста (ну тут еще моя Яндекс Метрика).

Дело в том, что сервер отдает пустую HTML-обертку, которую наполняет контентом JavaScript. Сам JavaScript не инициализируется на сервере (без специальных технологий), а только в браузере. Поэтому поисковая система при запросе на каждую страницу получает одну и ту же “пустую” HTML-обертку, в последствии не видя контента. Для нее все страницы это дубли.

Именно так работают JavaScript сайты. Данные компонуются не на сервере, а в браузере пользователя.

Поисковая система редко инициализирует JavaScript

Многие слышали, что поисковые системы Яндекс и Google умеют в запуск JavaScript на сайте. Это полная правда, хотя делают они это с огромной неохотой. Давайте на примере моего блога.

За месяц Google умудрился проиндексировать внешний вид моего нового сайта. После, я опубликовал большую статью и Google ее даже проиндексировал и добавил в поиск. Правда, через полтора месяца после публикации.

С Яндексом дела обстояли намного хуже. Видимо потому, что “реактивные” сайты довольно редки в рунете. Яндекс Бот не способен их индексировать без специальных танцев с бубном.

Яндекс наотрез отказался видеть мой сайт, выплюнул все статьи из индекса и сказал: “Везде дубли главной страницы”. Я даже решил через специальный инструмент проверить, а точно ли Яндекс Бот умеет в JavaScript? Все же сумел, но индексировать сайт не хотел.

Метод от Яндекса я не внедрил. Посчитал это полумерой, ведь с Google тоже было дело не гладко. Но зато я понял, что мой проект изначально был сделан не правильно. Нужны были изменения.

Решение

Я снес все и построил заново, опираясь на технологию SSR.

SSR - Server Side Rendering. Данная технология позволяет инициализировать часть JavaScript на сервере и выдавать готовые данные пользователю. Сайт, сделаный через SSR, ничем не будет отличаться для поискового робота от любого другого сайта, например, сделанного на WordPress.

Самый первый скриншот, который я вам показал в начале статьи, это страница сайта без SSR. А вот та же самая страница, но к сайту был подключен SSR.

Сайт с SSR.

Как видите, текст есть, и сайт прекрасно индексируется поисковыми системами. Уже через 8 дней Яндекс вернул мои статьи в поиск, а Google стал значительно быстрее забирать мои статьи в индекс. Примерно за 1-2 часа.

Технология SSR работает только на серверах с Node.js, поэтому часть бэкенда мне пришлось переписать с родного PHP на Node.js.

Я не сам написал SSR для сайта, а воспользовался готовым “из коробки” от Nuxt.js. Это типо фреймворк для фреймворка (для vue.js). Для react есть интересный проект - Gatsby, в котором тоже есть SSR из коробки.

В целом, это самый большой и главный подводный камень, о котором хотелось рассказать. Если SSR реализован, дальше проект можно оптимизировать самыми стандартными методами без каких либо проблем. Поэтому, если вы услышали, что ваш сайт будет разрабатываться с помощью Vue.js или React, уточняйте, будет ли присутствовать в нем SSR.

Об авторе: Максим Колмогоров, JavaScript-программист, веб-разработчик компании vverh.digital.

0
1 комментарий
Максим Фомин

Интересная статья, наконец что то интересное по JS в ру сегменте

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда