BigPipe и SEO в Facebook: маскировка? - PullRequest
3 голосов
/ 10 февраля 2012

Меня очень интересует технология Facebook BigPipe для улучшения взаимодействия с пользователем при отображении веб-страниц. Недостатком является то, что это в значительной степени основано на Javascript и совсем не подходит для поисковых систем.

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

  • Самый простой способ - предоставлять контент, не относящийся к BigPipe, поисковым роботам / роботам и передавать их остальным. Это не должно рассматриваться как маскировка: содержание точно такое же, макет такой же (после того, как был выполнен javascript BigPipe). Единственное, что меняет способ доставки, делает его более удобным для сканеров. Но сочтет ли Google это законным?

  • Второй способ - использовать другой Javascript для решения этой проблемы. При первом запросе отправьте страницу, отличную от BigPipe, которая включает в себя Javascript, который сохранит некоторые cookie. При последующих запросах отправляйте контент BigPipe только в том случае, если файл cookie представлен. Очень первая загрузка страницы не будет оптимизирована, но другая будет. Выглядит как отличное решение, но я не очень люблю умножать куки.

  • Третий способ - потоковая передача контента BigPipe, не используя комментарии HTML, как это делает Facebook, а используя теги <noscript>. Это бы выглядело так:

    <noscript id="pagelet_payload_foo">Some content to be indexed here</noscript>
    <script>onPageletArrive({id:'foo', [...]})</script>
    

    вместо подхода Facebook:

    <code id="pagelet_payload_foo"><!-- Some content to be indexed here --></code>
    <script>onPageletArrive({id:'foo', [...]})</script>
    

    Это выглядит великолепно, просто, как для сканера, так и для пользователя. Но мне кажется, что это хакский , и он не работает в IE 7/8, потому что содержимое тега noscript игнорируется в DOM. Это может привести к грязному особому случаю для этих браузеров.

Затем я более внимательно посмотрел на то, что делает Facebook. Похоже, они делают то же самое. Страницы оптимизированы в моем браузере, но не в кеше Google. Я попытался очистить весь кеш браузера и файлы cookie и снова запросил страницу. Несмотря ни на что, я продолжаю получать контент через BigPipe. Они не используют какую-либо технику на основе файлов cookie.

Тогда вопрос прост: как это делает Facebook? Первый метод будет рассматриваться как маскировка, или он работает только для Facebook, потому что это Facebook? Или я что-то пропустил?

Спасибо.

1 Ответ

2 голосов
/ 10 февраля 2012

Простой ответ заключается в том, что Facebook различает поисковых роботов и обслуживает их разным контентом.Это может быть через пользовательский агент (как я думаю, вы подразумеваете в своем Q) или поиск IP-адреса, чтобы увидеть, соответствует ли он диапазону адресов Google.

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

...