Handlebars.js и SEO

Я прочитал много дискуссий о шаблонах JavaScript и поисковой оптимизации. Тем не менее, я не нашел удовлетворительного ответа на вопрос (либо плохо документированный, либо устаревший).

В настоящее время я рассматриваю handlebars.js как решение для клиентского шаблона, потому что мне нравится возможность создавать вспомогательные функции. Но как насчет индексирования для поисковых систем? Указывает ли бот индексировать сгенерированный контент (как предполагалось) или только источник с уродливыми псевдо переменными javascript? Я знаю, что в этом вопросе много вопросов, но я чувствую, что никто точно не знает ответа.

Если такие двигатели, как Google, не будут правильно индексировать эти шаблоны, зачем использовать это для общедоступных веб-сайтов?

Другой вопрос в этом контексте: возможно ли создавать шаблоны Handlebar.js на стороне сервера, а затем представлять их на стороне клиента? Очевидно, чтобы избежать всего этого обсуждения в SEO.

Ответы

Ответ 1

Для того, чтобы сжимать клиентскую часть, большинство веб-ботов (т.е. Google и другие) не интерпретируют js на лету и анализируют новообретенный контент для индексирования. Вместо этого Google (и теперь Bing) поддерживает "схему Google Ajax Crawling Scheme" (https://developers.google.com/webmasters/ajax-crawling/docs/getting-started), которая в основном утверждает, что ЕСЛИ вы хотите, чтобы js отображал dom-контент для индексации ( т.е. рендеринг результатов вызова ajax), вы должны иметь возможность:

  • Запустите рендеринг async js через URL с помощью hashbangs #! (т.е. http://www.mysite.com/#!my-state) и
  • Можете выполнить предварительный снимок вашего сайта после изменения js по запросу.

Если вы используете инфраструктуру MVC на стороне клиента, такую ​​как Backbone.js или Spine - вам нужно будет предоставить эту услугу, если вы хотите, чтобы ваше веб-приложение было проиндексировано.

Как правило, это означает, что вы перехватываете запрос, сделанный веб-ботом (поясняется по ссылке выше), и очищайте сторону вашего сервера с помощью браузера без браузера (например, QT + capybara-webkit, HtmlUnit и т.д.), затем доставьте сгенерированный дом обратно запрашивающему боту.

Я заработал камень, чтобы сделать это в рубине (теперь беру запросы на тянуть) в https://github.com/benkitzelman/google-ajax-crawler

Он делает это как промежуточное ПО для стойки, используя capybara-webkit (и скоро phantomjs)

Ответ 2

Я не знаю о Handlebar.js, но для моего понимания SEO имеет некоторые проблемы с CONTENT в JAVASCRIPT. Убедитесь, что ваш контент отображается в поисковой системе (используйте симулятор spyder для некоторого теста). Избегать шпионских ловушек, как правило, было бы возможным. Надеюсь, это поможет вам.

Ответ 3

Поисковые системы не запускают JavaScript, поэтому, если вы хотите, чтобы ваш контент был проиндексирован, вам также нужно будет отображать свои шаблоны на сервере. Вы можете использовать рули в Node (серверная JS), чтобы отобразить ваш шаблон там, когда запрос страницы поступает от паука. Это больше работает, но это возможно. Github, google plus и твиттер делают что-то подобное.

Ответ 4

Вы можете использовать Distal templates, который ставит шаблоны как часть HTML для SEO.

Ответ 5

Смотрите Spiderable для временного решения. Проект Meteor (который использует Handlebars.js) используется для целей SEO.

http://docs.meteor.com/#spiderable

Ответ 6

Указывает ли бот на сгенерированный контент (как предполагалось) или только на источник с уродливыми псевдо-переменными javascript?

Ни потому, что боты индексатора не запускают JavaScript, и вы не обслуживаете шаблоны как документы HTML.

Создайте сайт, который работает без JavaScript, затем постройте поверх него.