Рубрики
Без рубрики

Мой одностраничный приложение SEO дружелюбный?

SPA обычно предоставляют страницу в браузере, который не имеет значимого контента. Содержимое вместо этого загружено AJAX, так как пользователь навигаций на сайте. Может ли поисковую систему индексировать этот контент? Это ранжет, а также статический HTML? Эта статья попытается принести ясность на эти вопросы.

Автор оригинала: Anthony Gore.

Новерительно мюмкий район одностраничного заявления (SPA) разработки SEO. В зависимости от того, кто вы спрашиваете, поисковая система ползания клиентского контента является либо Полностью хорошо , Хорошо, пока это синхронно или Не совсем хорошо Отказ

Из-за путаницы, вызванной всеми этими противоречивыми советами, я регулярно вижу вопрос «мой Vue SPA в порядке для SEO?» придумать в таких местах, как Vue.js Разработчики Facebook Group , Vue.js Форумы и R/Vuejs на Reddit Отказ

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

Примечание: эта статья была первоначально опубликована здесь на блоге разработчиков Vue.js В 2018/04/09.

Проблема с клиентом контента

Стандартная реализация одностраничного приложения предоставляет страницу «Shell» в браузере без какого-либо значимого контента. Содержимое вместо этого загружается по запросу с сервера с AJAX, а затем добавляется на страницу с помощью JavaScript.

Это позволяет пользователю просмотреть «страницы» сайта SPA без обновления страницы, теоретически улучшающимся UX.

seo_01.png.

Хотя эта архитектура работает для пользователей человека, просматривая страницу в браузере, как насчет поисковой программы Могут ли скандры запускать JavaScript? Если это так, будут ли они ждать вызовы AJAX, чтобы завершить до ползания страницы?

Важно знать это, так как он может определить, следует ли контент сайта индексироваться поисковой системой, и так же, как важно, насколько хорошо его содержание оценивается.

GoogleBot.

Поскольку Google Ведущая поисковая система Во всем мире наш запрос должен сосредоточиться на GoogleBot, поисковой системе Google Grawler.

В первые дни Интернета GoogleBot будет сканировать только статический HTML, представленный на странице. Это было Объявлено в 2014 году Однако, что GoogleBot теперь попытается сделать JavaScript, прежде чем он начал ползать.

Чтобы помочь отладить какие-либо проблемы с рендерингом JavaScript-модифицированной страницы, Google предоставил WebMasters с Привлечь в качестве Google Инструмент, который показывает снимок того, что GoogleBot видит на определенном URL.

Один общий миф заключается в том, что GoogleBot не сканит асинхронный JavaScript. Эта статья сделал отличную работу, разобрать ее. TLDR; GoogleBot ждет не менее 20 секунд для асинхронных звонков для завершения!

Как GoogleBot видит спа

Пример Quintessential Vue.js SPA – Vue Hackernews клон 2.0 Отказ Это проект с открытым исходным кодом, предоставленный группой VUE, чтобы продемонстрировать полные возможности Vue и эффективных шаблонов проектирования.

Я развернул это приложение к экземпляру Heroku и пропустил его через Fetch в качестве Google. На рисунке ниже скриншот слева показывает, как GoogleBot видел его, и скриншот справа показывает, как пользователь увидит его. Они кажутся идентичными.

seo_02.png.

Удаление рендеринга на стороне сервера

Одной из ключевых особенностей VUE Hackernews Clone 2.0 является серверным рендерингом (SSR). Это означает, что в отличие от более базового спа, содержание для каждой страницы отображается на сервере и предоставляется браузеру на каждой нагрузке на каждую страницу, так же, как это было статический HTML.

Тем не менее, мы пытаемся понять, как GoogleBot видит контент, видимый клиентом. По этой причине я выключил SSR и снова провел тест:

seo_03.png.png

Даже только с клиентом рендеринга GoogleBoT не почувствовал никаких проблем видеть содержание. Я также ждал несколько дней, чтобы посмотреть, провел ли Google приложение. У него было:

SEO_04.PNG.

Но ждать…

Хотя этот тест, кажется, удовлетворяет любую обеспокоенность по поводу контента, оказанного клиентом, есть некоторые причины, по которым вы не должны иметь полную доверие к нему:

  1. Как и все двигатели JavaScript, GoogleBot не будет непогрешимым, и могут быть краевые чехлы, где он не может сделать вашу страницу
  2. Только потому, что страница может быть проиндексирована, не означает, что она будет хорошо расти

Быть скептическим для JavaScript

У GoogleBoT не было проблем, предоставляющих Vue Hackernews. Но мы не должны заключать, что он может сделать весь JavaScript так безупречно. Объявление Google 2014 о рендеринге JavaScript позволило бы понять, что не будет гарантии, хотя большинство разработчиков, похоже, упускают это.

Как правило, Browser GoogleBot должен иметь JavaScript Engine с определенным подмножеством реализованных веб-стандартов и функций ES, а также его особых особенностей для того, как реализованы.

По словам Это видео Из разработчиков Google Addy Osmani и ROB DODSON (выпущены ноябрь 2017 года), GoogleBOT в настоящее время основан на Chrome 41. Есть много новых API, которые были выпущены с версии 41, и если вы использовали ни одного из них, предположительно GoogleBot не будет возможность рендеринга и индексировать вашу страницу.

Вы можете подумать, что это тривиальная проблема, поскольку вам нужно будет транспорт или многолифировать такие функции для более старых браузеров. Тем не менее, если у вас не должна быть слепой веры в ваше приложение.

Оптимизация

Не забывайте «O» в «SEO» означает «оптимизация». Быть индексированным быть поисковой системой недостаточно; Мы хотим, чтобы наши сайты тоже хорошо расти. Fetch, когда Google сообщает нам, как видно страница, но не то, как страница сравнивается с конкурсом.

Есть интересный комментарий к статье SEO против реагирования: веб-скалы умнее, чем вы думаете Сделано SEO Expert Барри Адамс Отказ На тему того, как поисковые системы занимают SPAS Он сказал :

«Что произойдет, когда вы используете React без рендеринга на стороне сервера, заключается в том, что гусенично останавливает на саму первую страницу, потому что она не может видеть какие-либо гиперссылки, чтобы следовать … это делает процесс ползания невероятно медленным и неэффективным. И именно поэтому сайты Созданные на React (и подобные платформы JavaScript) выполняют хуже в Google, чем на веб-сайтах, которые в первую очередь служат простой HTML к разбору …. Простые веб-сайты HTML могут быть выполнены очень эффективно, вновь добавленные и измененные контент будут заползли и индексированы намного быстрее, и Google гораздо лучше, чтобы оценить приоритет ползания отдельных страниц на таких сайтах ».

Хотя он не дает никаких доказательств для этого, это, похоже, встроена философия другого рейтинга, как Скорость страницы Отказ

Что делать, если SEO имеет решающее значение

Нижняя строка есть, если SEO имеет решающее значение, вы не можете полагаться на рендеринг клиента вашего SPA и должен убедиться, что контент включен в ваши страницы.

Это не значит, что вам нужно отказаться от спа-архитектуры. Существует два метода, рендеринг на стороне сервера и побуждение, что оба могут достичь желаемого результата.

Серверный рендеринг

Серверный рендеринг (SSR) находится в том, где страница отображается веб-сервером как часть цикла запроса/ответа сервера. В случае vue.js и других подобных рамх это делается путем выполнения приложения против виртуального DOM.

Состояние виртуального дома преобразуется в HTML-строку, затем вводится в страницу до того, как она отправляется клиенту. Когда страница достигает браузера, приложение JavaScript будет беспрепятственно установить существующий контент.

SSR гарантирует, что ваша страница будет дружелюбна, так как содержимое страницы завершено независимо от того, как, или даже если, гусеничный, работает JavaScript.

SSR имеет свои недостатки, хотя:

  • Вам нужно будет разработать свой код, чтобы быть «Универсальным» i.e. Он должен работать как в браузере, так и в среде JavaScript на основе серверов. Это означает любой код, который ожидает APIS-браузера и объекты, такие как окно Быть доступным, не будет работать.
  • Ваше приложение будет работать по каждому запросу на сервер, добавляя дополнительную нагрузку и замедление ответов. Кэширование может частично облегчить это.
  • Это сложно и поглощение времени для реализации SSR, поэтому вам понадобится больше часов разработчика для проекта.
  • Он работает хорошо с узлом. SSR может быть сделан с блестками без узла, например, с помощью расширения PHP v8js , но такие решения довольно ограничены.

Если вы хотите реализовать рендеринг на стороне сервера в SPA Vue.js, вы должны начать с официального руководства: Vue.js Руководство по рендерингу сервера Отказ Я также написал руководство по внедрению SSR с Laravel и Vue.js: Серверный рендеринг с Laravel & Vue.js 2.5 Отказ

Совет: фреймворки, такие как Nuxt.js поставляться с рендерингом на стороне сервера из коробки.

Пределе

Если вы не можете использовать SSR для одной из вышеуказанных причин, есть еще один способ: Prerendering. С помощью этого подхода вы запустите приложение с помощью безголового браузера в среде разработки, снимок на выходе страницы и замените ваши HTML-файлы с помощью этого моментального снижения в ответ сервера.

Это в значительной степени та же концепция, что и SSR, за исключением того, что это сделано предварительно развертывание, а не на живом сервере. Обычно выступают с помощью безголового браузера, такими как Chrome и могут быть включены в поток сборки с помощью WebPack, Pulp и т. Д.

Преимущество Prerendering состоит в том, что он не требует производственного сервера Node.js и не добавляет груз на ваш производственный сервер.

Тем не менее, Prerendering также имеет недостатки:

  • Это не работает хорошо для страниц, которые отображают изменения данных, например, Vue Hackernews.
  • Это не подходит для страниц, имеющих пользовательский контент E.g. Страница счета с личными деталями пользователя. Однако эти виды страниц менее важно для SEO; Вы обычно не хотите, чтобы страница счета индексирована в любом случае.
  • Вам нужно будет презирать каждый маршрут в приложении индивидуально, что может занять большое количество времени для большого сайта.

Если вы хотите реализовать Prerendering в приложении Vue.js, я написал руководство по этому блогу: Предварительно представьте приложение Vue.js (с узлом или Laravel)

Совет: Prerendering для SEO можно приобрести как услугу от Prerender.io.

Заключение

Многие разработчики увидели объявление Google 2014 года о рендеринге JavaScript в соответствии с озабоченностью SEO для SEO по поводу содержания SPA. На самом деле, нет никакой гарантии, что GoogleBot будет правильно представлять страницу, и если она будет, она все еще может оценить страницу ниже статических HTML-страниц в конкурирующих сайтах.

Мой совет: если вы собираетесь использовать архитектуру SPA, обязательно предоставьте визуализацию серверов или по предварительным страницам.

Стать старшим Vue Developer в 2020 году.

Учитесь и осваивайте, какие профессионалы знают о строительстве, тестировании и развертывании, полностью стековых Vue Apps в нашем последнем курсе.

Учить больше