Blog

Una propuesta para hacer que AJAX sea rastreable

Miércoles, 7 de octubre de 2009

Hoy nos entusiasma proponer un nuevo estándar para que los sitios web basados en AJAX sean rastreables. Esto beneficiará a los webmasters y a los usuarios al hacer que el contenido de los sitios web ricos e interactivos basados en AJAX sea universalmente accesible a través de los resultados de búsqueda en cualquier buscador que decida participar. Creemos que poner este contenido a disposición para el rastreo y la indexación podría mejorar significativamente la Web.

Una propuesta para hacer que AJAX sea rastreable

Aunque los sitios web basados en AJAX son populares entre los usuarios, los motores de búsqueda tradicionalmente no pueden acceder a ninguno de sus contenidos. La última vez que lo comprobamos, casi el 70 % de los sitios web que conocemos utilizan JavaScript de una forma u otra. Por supuesto, la mayor parte de ese JavaScript no es AJAX, pero cuanto mejor puedan los motores de búsqueda rastrear e indexar AJAX, más podrán los desarrolladores añadir funciones más ricas a sus sitios web y seguir apareciendo en los motores de búsqueda.

Algunos de los objetivos que queríamos lograr con esta propuesta eran:

  • Se requieren cambios mínimos a medida que crece el sitio web
  • Los usuarios y los motores de búsqueda ven el mismo contenido (sin encubrimiento o cloaking)
  • Los motores de búsqueda pueden enviar a los usuarios directamente a la URL de AJAX (no a una copia estática)
  • Los propietarios de sitios tienen una forma de verificar que su sitio web AJAX se procesa correctamente y, por lo tanto, que el rastreador tiene acceso a todo el contenido

Así es como los motores de búsqueda rastrearían e indexarían AJAX en nuestra propuesta inicial:

  • Modificar ligeramente los fragmentos de URL para páginas AJAX con estado
    Las páginas AJAX con estado muestran el mismo contenido cuando se accede a ellas directamente. Estas son páginas a las que se podría hacer referencia en los resultados de búsqueda. En lugar de una URL como
    https://example.com/page?query#state
    nos gustaría proponer la adición de un token para hacer posible el reconocimiento de estas URL:
    https://example.com/page?query#[FRAGMENTTOKEN]state. Basándonos en una revisión de las URL actuales en la Web, proponemos utilizar “!” (un signo de exclamación) como token para esto. La URL propuesta que se podría mostrar en los resultados de búsqueda sería entonces:
    https://example.com/page?query#!state.
  • Utilizar un navegador sin interfaz gráfica (headless browser) que genere una captura HTML en su servidor web
    El navegador sin interfaz gráfica se utiliza para acceder a la página AJAX y genera código HTML basado en el estado final del navegador. Solo las URL etiquetadas especialmente se pasan al navegador sin interfaz gráfica para su procesamiento. Al hacer esto en el lado del servidor, el propietario del sitio web tiene el control del código HTML que se genera y puede verificar fácilmente que todo el JavaScript se ejecuta correctamente. Un ejemplo de dicho navegador es
    HtmlUnit, un “navegador sin interfaz gráfica de usuario para programas Java” de código abierto.
  • Permitir que los rastreadores de los motores de búsqueda accedan a estas URL omitiendo el estado (escape)
    Dado que los fragmentos de URL nunca se envían con solicitudes a los servidores, es necesario modificar ligeramente la URL utilizada para acceder a la página. Al mismo tiempo, esto le indica al servidor que utilice el navegador sin interfaz gráfica para generar código HTML en lugar de devolver una página con JavaScript. Otras URL existentes, como las utilizadas por el usuario, se procesarían normalmente, pasando por alto el navegador sin interfaz gráfica. Proponemos escapar la información de estado y añadirla a los parámetros de consulta con un token. Utilizando el ejemplo anterior, una de estas URL sería
    https://example.com/page?query&[QUERYTOKEN]=state. Basándonos en nuestro análisis de las URL actuales en la Web, proponemos utilizar _escaped_fragment_ como token. La URL propuesta se convertiría entonces en
    https://example.com/page?query&_escaped_fragment_=state.
  • Mostrar la URL original a los usuarios en los resultados de búsqueda
    Para mejorar la experiencia del usuario, tiene sentido remitir a los usuarios directamente a las páginas basadas en AJAX. Esto se puede lograr mostrando la URL original (como
    https://example.com/page?query#!state de nuestro ejemplo anterior) en los resultados de búsqueda. Los motores de búsqueda pueden verificar que el texto indexable devuelto a Googlebot sea el mismo o un subconjunto del texto que se devuelve a los usuarios.

diagram of an http request with ajax crawl setup

En resumen, comenzando con una URL con estado como
https://example.com/dictionary.html#AJAX, podría estar disponible tanto para los rastreadores como para los usuarios como https://example.com/dictionary.html#!AJAX la cual podría ser rastreadada como
https://example.com/dictionary.html?_escaped_fragment_=AJAX la cual a su vez se mostraría a los usuarios y se accedería a ella como https://example.com/dictionary.html#!AJAX

Ver la presentación

Actualmente estamos trabajando en una propuesta y una implementación de prototipo. Sus comentarios son muy bienvenidos; por favor, añada sus comentarios a continuación o en nuestro
Foro de ayuda para webmasters. ¡Gracias por su interés en hacer que la web basada en AJAX sea accesible y útil a través de los motores de búsqueda!

Entrada de blog por
John Mueller, analista de tendencias de webmasters, Google Zúrich

Alien Road

Cómo lo aplicamos

Google announcements age. We keep this post here for the record, and we note for clients whether the behaviour it describes still applies today or has since been superseded.

Servicios relacionados

Compartir