Работа с SEO на Isomorphic React

я использую React & Node JS для создания универсальных приложений (). Я также использую реактивный шлем в качестве библиотеки для обработки заголовка страницы, метаданных, описания и т. д. Но у меня возникают проблемы при динамической загрузке контента с использованием ajax, поисковый робот Google не может правильно получить мой сайт, потому что контент будет загружаться динамически. Любое предложение для решения этой проблемы? Благодарю вас!


person adrian hartanto    schedule 26.09.2016    source источник
comment
Вы когда-нибудь слышали о рендеринге на стороне сервера?   -  person FurkanO    schedule 26.09.2016
comment
да, я уже использую рендеринг на стороне сервера @FurkanO, так как мне нужно сначала получить данные из службы API, поэтому он будет работать асинхронно.   -  person adrian hartanto    schedule 26.09.2016
comment
Если вы выполняете SSR, у вас не должно возникнуть проблем с SEO, поскольку каждая страница отображается на сервере. Я не уверен, делаете ли вы это. SSR означает, что ваша первая страница извлекает данные с сервера. Ваше приложение делает это?   -  person FurkanO    schedule 26.09.2016
comment
хм, я получаю данные о действии редукса. так что это будет получаться на стороне клиента, верно? Итак, мне нужно перенести все выборки данных на сервер? @ФурканО   -  person adrian hartanto    schedule 26.09.2016
comment
Определенно, вам следует взглянуть на репозитории с SSR на github, чтобы начать.   -  person FurkanO    schedule 26.09.2016
comment
Хм, у вас есть отличные рекомендации по применению SSR?   -  person adrian hartanto    schedule 26.09.2016
comment
В этом репозитории реализован рендеринг на стороне сервера github.com/erikras/react-redux-universal-hot-example.   -  person FurkanO    schedule 26.09.2016
comment
Ладно, посмотрю. Спасибо @FurkanO   -  person adrian hartanto    schedule 26.09.2016
comment
redux.js.org/docs/recipes/ServerRendering.html здесь также отличное место.   -  person FurkanO    schedule 26.09.2016


Ответы (1)


У меня была похожая ситуация, но с бэкэндом как django, но я думаю, какой бэкэнд вы используете, не имеет значения.

Прежде всего, позвольте мне перейти к основам: боты Google на самом деле не ждут завершения ваших вызовов ajax. Если вы хотите проверить это, зарегистрируйте свою страницу в инструментах Google для веб-мастеров и попробуйте загрузить ее как Google, вы увидите, как вашу страницу видят боты (у меня была просто пустая страница со значком загрузки), поэтому, поскольку вызовы не завершаются, а не данные и страница пуста, что плохо для SEO, так как боты читают текст.

Итак, что вам нужно сделать, это попробовать рендеринг на стороне сервера. Это можно сделать двумя способами: prerender.io или создать шаблоны на сервере, которые загружаются при вызове страницы. в первый раз, после чего запускается ваше одностраничное приложение.

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

Не стесняйтесь спрашивать, если есть какие-либо вопросы :)

person Harkirat Saluja    schedule 26.09.2016
comment
ах хорошо, спасибо за предложение. Можете ли вы объяснить мне более подробно о шаблоне на стороне сервера? - person adrian hartanto; 26.09.2016
comment
да .. шаблон, который вы создаете из кода реакции, просто скопируйте созданный html из элемента проверки и создайте html файл на бэкэнде. Я предполагаю, что вам нужны данные в html (которые вы получаете из своего API); который вы можете получить из базы данных (или вызвать API) и передать его из представления в шаблон. - person Harkirat Saluja; 26.09.2016