2011-10-07 24 views
15

He leído una gran cantidad de discusiones sobre la creación de plantillas de JavaScript y la optimización del motor de búsqueda. Aún así, no he encontrado una respuesta satisfactoria a la pregunta (ya sea mal documentada o desactualizada).Handlebars.js y SEO

Actualmente estoy buscando en handlebars.js como una solución de plantilla del lado del cliente, porque me encanta la posibilidad de crear funciones de ayuda. ¿Pero qué hay de la indexación para los motores de búsqueda? ¿El bot indexa el contenido generado (como estaba previsto) o solo el origen con las feas pseudovariables javascript? Sé que hay muchos temas en curso sobre este tema, pero creo que nadie sabe exactamente la respuesta.

Si los motores como Google no indexan estas plantillas correctamente, ¿por qué molestarse en usar esto para los sitios web públicos?

Otra pregunta en este contexto: ¿Es posible renderizar plantillas Handlebar.js en el lado del servidor y luego presentarlas en el lado del cliente? Obviamente para evitar toda esta discusión SEO.

Respuesta

22

Para el lado del cliente de crunching, la mayoría de los bots web (es decir, Google y otros) no interpretan js sobre la marcha y analizan el contenido recién procesado para su indexación. En cambio, Google (y ahora Bing) admiten el 'Esquema de rastreo de Google Ajax' (https://developers.google.com/webmasters/ajax-crawling/docs/getting-started), que básicamente establece que SI desea que el contenido dominado de js se indexe (es decir, que represente resultados de llamadas ajax), debe poder:

  1. desencadenan la asincrónicos js representación a través de la URL utilizando hashbangs #! (es decir http://www.mysite.com/#!my-state), y
  2. ser capaz de servir una instantánea dom prerendered de su sitio después de la modificación js bajo petición.

Si utiliza un marco MVC del lado del cliente como Backbone.js, o Spine, deberá proporcionar este servicio si desea indexar su aplicación web.

Generalmente esto significa que interceptar una petición hecha por la web bot (se explica en el siguiente enlace), y raspar su lado del lado del servidor usando un navegador sin interfaz gráfica (es decir QT + capybara-webkit, HtmlUnit, etc.), entonces entregar la generada volver a la bot solicitante.

he comenzado una joya de hacer esto en el rubí (ahora tomar peticiones de tracción) en https://github.com/benkitzelman/google-ajax-crawler

Para ello, como middleware bastidor con capibara-webkit (y pronto phantomjs)

+0

ACTUALIZACIÓN: La gema ha sido publicada en RubyGems y puede ser utilizada por cualquier aplicación de Rack, ya que las instrucciones y ejemplos de uso del middleware 'gem install google_ajax_crawler' están en el enlace de Github arriba – Ben

+0

. Si utilizara Backbone.js, tendría que asegúrese de estar usando un enrutador? – unclejam

+0

Cómo estructurar su aplicación JS es en gran medida sin importancia. Podría usar enrutadores Backbone, o alternativamente, podría estar manipulando el dom sin usar ningún marco: el truco es determinar cuándo su página ha alcanzado un estado renderizado en el navegador sin cabeza, por lo que está tomando una instantánea en el momento correcto. La mayoría de los marcos de instantáneas agregan algún tipo de señalización fn a su página, con la idea de que la llame cuando su página haya terminado de cargar/renderizar. – Ben

1

No sé de Handlebar.js, pero para mi comprensión SEO tiene algún problema con CONTENT en JAVASCRIPT. Asegúrese de que su contenido sea visible para el motor de búsqueda (utilice un simulador de spyder para realizar una prueba). Evitar trampas spyder en general sería el camino a seguir. Espero que pueda ayudarte.

-2

¿El bot indexa el contenido generado (como se pretendía) o solo el origen con las pseudovariables feas de javascript?

Ninguno, porque los botnets del indexador no ejecutan JavaScript y usted no sirve las plantillas como documentos HTML.

Cree un sitio que funcione sin JavaScript, luego build on top of it.

+0

estoy de acuerdo, trabajar mejor con JS que modificar el DOM en el navegador como jQuery. Para que pueda tener lo mejor de ambos ... gran efecto de JS y contenido semántico html. – GibboK

+2

"Cada vez hay más evidencia de que Googlebot puede ejecutar javascript y analizar el contenido generado por llamadas Ajax también" http://en.wikipedia.org/wiki/Googlebot –

+0

Esto fue así hasta que HTML5 nos cambió de documentos a aplicaciones. – Lodewijk

1

Los motores de búsqueda no ejecutan JavaScript, por lo que si desea que su contenido esté indexado, también deberá presentar sus plantillas en el servidor. Puede usar los manubrios en el nodo (JS del lado del servidor) para mostrar su plantilla allí cuando la solicitud de la página proviene de una araña. Es más trabajo, pero es posible. Github, google plus y twitter hacen algo similar.

-1

Puede usar Distal templates que coloca las plantillas como parte del HTML para SEO.