2016-11-22 18 views
1

Я опубликовал сайт reactjs, который опирается на запросы AJAX (запросы POST на API-интерфейсе graphQL, если это необходимо) для отображения данных.Google fetch and render отображает содержимое, полученное AJAX

Использование сервиса google console fetch & render service, я вижу, что отображаются только мои компоненты, которые не должны вызывать какой-либо API. Любой компонент на основе AJAX не отображается вообще.

Google fetch & рендеринг показывает мне 2 изображения рендеринга моего сайта (google vs visitor), но оба они не имеют содержимого AJAX.

Обязательно ли в этом случае рендеринг сервера?

У меня нет файла robots.txt.

Я делаю что-то вроде:

import React, { Component } from 'react'; 
import { observer } from 'mobx-react'; 
import { observable, runInAction } from 'mobx'; 
import axios from 'axios'; 

import ContributorList from '~/components/global/ContributorList'; 

import type { User } from '~/types'; 

import CSSModules from 'react-css-modules'; 
import styles from './style.less'; 

@observer 
@CSSModules(styles) 
export default class Footer extends Component { 
    @observable contributors: Array<User> = []; 

    async loadContributors() { 
     const { data: { 
      data: data 
     } } = await axios.post('/', { 
      query: ` 
      { 
       users { 
        id, 
        name, 
        slug, 
        avatar { 
         secure_url 
        } 
       } 
      } 
      ` 
     }); 

     runInAction(() => { 
      this.contributors = data.users; 
     }); 
    } 

    componentDidMount() { 
     this.loadContributors(); 
    } 

    render() {  
     return (
      <div styleName='contributors'> 
       { 'Static content' } 
       <ContributorList 
        contributors={ this.contributors } 
       /> 
      </div> 
     ); 
    } 
}; 

В моем браузере, я могу увидеть все хорошо («Статическое содержимое» + плательщикам, которые редко выбираются асинхронно). Но с помощью google fetch и render я вижу 2 скриншота с отображаемым только «Статическим контентом».

В результате мой динамический контент не отображается в результатах поиска Google.

+0

Опубликовать соответствующий код. Трудно определить проблему без дополнительной информации –

ответ

0

Теперь все люди говорят о прогрессивных веб-приложениях (PWA), которые полагаются на Ajax и отображают содержимое веб-сайта с использованием методов клиентской стороны.

Но эти методы не являются дружественными к SEO, поскольку Google не может индексировать классический запрос Ajax и большинство современных запросов.

Поскольку вы используете ReactJs и хотите, чтобы Google индексировал ваш сайт, вы должны использовать рендеринг на стороне сервера.

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

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

Точно так же Google сканирует и индексирует ваш сайт.

Есть много рекомендаций от Google относительно обхода контента Ajax:

  1. Использование чистой структуры URL и избежать использования JS ссылки (JavaScript: недействительным (0);)
  2. нагрузки все с помощью стороне сервера визуализации
  3. Убедитесь, что ваш сайт работает на всех устройствах (реагирующих)
  4. Submit XML карта сайта
  5. Используйте канонические ссылки, если у вас есть более чем одну структуру URL (который не рекомен ded)

Мы работаем над новым проектом, подобным вашему, построенным с использованием реаджей, и он станет одним из первых PWA в мире, который Google может сканировать как любой другой веб-сайт, выполнив вышеуказанные пункты.

Также Google опубликовал статью о своем блоге веб-мастеров о PWA и любом современном веб-приложении, таком как ваше.

Для получения более подробной информации проверить эту ссылку https://webmasters.googleblog.com/2016/11/building-indexable-progressive-web-apps.html

Относно файл robots.txt, его рекомендуется добавлять роботов для любого веб-сайта, даже если у вас нет страниц, чтобы блокировать, но вы можете блокировать Аякса запросов и других раздражающих сканеров.