Что касается клиентской стороны, большинство веб-ботов (т. Е. Google и другие) не интерпретируют js на лету и не анализируют недавно отрендеренный контент для индексации.Вместо этого Google (и теперь Bing) поддерживает «Схему сканирования Ajax Google» (https://developers.google.com/webmasters/ajax-crawling/docs/getting-started)), которая в основном гласит, что если вы хотите, чтобы контент, отображаемый в формате js, был проиндексирован (т. Е. Отображается результат вызова ajax), вы должны иметь возможность:
- Запуск асинхронного рендеринга JS через URL с использованием hashbangs
#!
(то есть http://www.mysite.com/#!my-state
) и - Возможность показывать предварительно созданный снимок dom вашего сайта ПОСЛЕ jsмодификация по запросу.
Если вы используете клиентскую среду MVC, такую как Backbone.js или Spine, вам понадобится предоставить эту услугу, если вы хотите, чтобы ваше веб-приложение было проиндексировано.
Обычноэто означает, что вы перехватываете запрос, сделанный веб-ботом (объясненный по ссылке выше), и очищаете свою сторону сервера, используя браузер без головы (например, QT + capybara-webkit , HtmlUnit и т. д.), затем доставьте созданный домен обратно запрашивающему боту.
Я запустил гем для этого в ruby (теперь принимаю pull-запросы) в https://github.com/benkitzelman/google-ajax-crawler
Itделает это как стойку мидлПрограммное обеспечение с использованием capybara-webkit (и скоро phantomjs )