После прочтения политики Google для создания сканируемого содержимого Ajax, а также множество сообщений блога разработчиков и Stackoverflow Q &, Я остаюсь с заключением, что нет возможности создать сайт только с использованием JavaScript/Ajax-сгенерированного HTML-кода. Сайт, на котором я сейчас работаю, не получает значительную часть своего контента, проиндексированного. Весь слой презентации для нашего неиндексированного контента построен в JavaScript, генерируя HTML из JSON, возвращенный из вызовов веб-службы на основе Ajax, и мы полагаем, что Google не индексирует контент из-за этого. Это правильно?
Единственным решением, похоже, является также "отпавшая" версия сайта для поисковых систем (в частности, Google), где все HTML и контент будут генерироваться, как это традиционно было, на стороне сервера. Для клиентов с включенным JavaScript кажется, что мы можем использовать по существу тот же подход, что и сейчас: с помощью JavaScript для генерации HTML из асинхронно загруженного JSON.
Считая, что моя лучшая практика применения принципа mustache.js, преобразует данные JSON, отправленные с сервера в HTML, как определено по его копии файла шаблона. А для искателей поиска и клиентов с отключенным JavaScript реализация на стороне сервера одного и того же механизма шаблонов, например mustache.java, будет аналогичным образом работать на его копию того же точного файла шаблона для вывода HTML.
Если это решение является правильным, то как это отличается от подходов, используемых 4 или 5 года назад на тяжелых тяжелых сайтах, где сайты по существу должны были поддерживать две копии кода шаблонов, одну копию для пользователей с включенным JavaScript ( почти все) и другую копию (например, в FreeMarker или Velocity) для поисковых систем и браузеров без включенного JavaScript (почти нет)? Похоже, что должен быть лучший способ.
Означает ли это, что необходимо поддерживать два шаблонных слоя модели: один на стороне клиента и один на стороне сервера? Насколько целесообразно объединить эти клиентские шаблоны с интерфейсом MVC (MV/MVVC), например Backbone.js, Ember.js или Библиотека приложений YUI? Как эти решения влияют на затраты на обслуживание? Было бы лучше попытаться сделать это, не введя больше фреймворков - новый механизм шаблонов и интерфейсный интерфейс MVC - в стек технологии разработчиков? Есть ли способ сделать это менее избыточно?
Если это решение неверно, то есть что-то, чего нам не хватает, и с нашим JavaScript может быть лучше, чтобы сохранить существующую асинхронную структуру HTML-from-JSON и проиндексировать ее, поэтому нам не нужно вводить что-то новый для стека архитектуры? Нам действительно не нужно было бы обновлять две версии уровня презентации, когда бизнес нуждается в изменении.