AJAX: ¿Qué es y como afecta al SEO de tu web?

Para responder a la pregunta de qué es “AJAX”, primero debemos tener claro que es y para qué sirve JavaScript. JS es un lenguaje de programación, al igual que PHP o cualquier otro. La diferencia sustancial, es que JavaScript se ejecuta en el cliente, es decir, en el navegador del usuario, y no en el servidor.

Esta forma de ejecución permite crear efectos y dinamismos cuando el usuario interacciona con la página web. Cuando un usuario solicita una URL, el servidor que la alberga recibe una petición y devuelve, como respuesta, un código HTML junto con código JavaScript. Es este JavaScript el que se encarga de dinamizar y manipular el contenido HTML creando, por ejemplo, efectos en los botones o dinamismos en los menús desplegables.

La gran ventaja de JavaScript, es que el código está almacenado en el ordenador del usuario, lo que permite una rápida ejecución de las funciones. No es necesario estar consultando constantemente al servidor y, por tanto, esperando respuestas. El inconveniente, es la posible incompatibilidad entre el lenguaje JavaScript y el navegador del usuario. A pesar de que la mayoría de navegadores modernos tienen integrado este lenguaje, es posible que el cliente no sea capaz de ejecutar el código, empobreciendo o dificultando sustancialmente la experiencia de usuario.

¿Qué tiene esto que ver con AJAX?

AJAX son las siglas de Asynchronous JavaScript And XML. Esta técnica está pensada para su uso en aplicaciones web y de dispositivos móviles y tiene como objetivo realizar cambios en el contenido sin necesidad de volver a cargar todo el código HTML.

Estos cambios en el contenido se realizan mediante una consulta en segundo plano que realiza el navegador al servidor. Mientras el usuario manipula el contenido e interacciona, la función AJAX está trabajando de forma oculta con el servidor y solicitando nuevos datos para mostrar en la página/aplicación.En el esquema de comunicación tradicional, el usuario necesitaría volver a cargar toda la página cada vez que solicita nuevos datos al servidor. El sistema de trabajo de AJAX permite acelerar la petición de pequeños paquetes de datos e información, prescindiendo de aquellos elementos que ya han sido cargados previamente y se mantienen estáticos.

¿Dónde está el problema?

El principal inconveniente de esta técnica es su popularización como sistema para la carga de contenidos en webs dinámicas. Un claro ejemplo de este “boom” es AngularJS, un framework para el desarrollo web front end que permite crear aplicaciones SPA (Single-Page Aplications). Por resumirlo de un modo muy “sui-generis”, AngularJS permite crear páginas web donde todo el contenido puede ser mostrado usando una sola URL o página HTML. Es el usuario, mediante su interacción con la web, quien activa la ejecución de funciones AJAX que solicitan nueva información al servidor y modifican el contenido de la página.

Hasta que el usuario no realiza una acción que activa la función AJAX, el nuevo contenido se mantiene en el servidor, no en el navegador. Esto casusa que el contenido no exista a menos que se solicite.

El resultado, para el usuario, es un sitio web capaz de mostrar contenidos e interacciones con una velocidad muy superior al sistema de comunicación cliente-servidor tradicional, con un ahorro sustancial en la cantidad de recursos (MB) consumidos. Solo cargamos la información nueva y mantenemos el marco general de la web.

Pero, como he comentado, el sitio web se compone únicamente por una URL, y el contenido de esta página es dinámico. ¿Qué ocurre cuando Google quiere rastrear los contenidos de esta web? El drama está servido.

AJAX y SEO

Oficialmente, desde 2009, Google ha reconocido tener problemas para renderizar contenidos generados mediante JavaScript y AJAX. El principal escollo, es que el robot de Google no es un humano, y no dispone de un navegador sobre el que ejecutar funciones AJAX y JavaScript, por lo que no puede encontrar unos contenidos que no son estáticos y que el servidor solo muestra bajo petición del usuario. Frente a este problema, Google propuso un sistema que, a grandes rasgos, permitía almacenar ciertas variables en la URL, de modo que el robot fuera capaz de reproducir la consulta del usuario y almacenar el resultado como una URL indexable. Otra alternativa, era crear versiones estáticas HTML solo para el robot de Google.

El sistema fue depreciado en 2015, cuando se anunció que Google era capaz, ahora sí, de interpretar correctamente e indexar contenidos generados mediante AJAX. ¿Significa esto que Google es realmente capaz de indexar correctamente sitios webs que dependen de AJAX? La respuesta es un rotundo NO.

Desde el anuncio de Google, muchos especialistas SEO se han puesto manos a la obra para averiguar si realmente Google es capaz de entender e indexar sitios web que cargan contenido asíncrono. El resultado de los experimentos fue decepcionante. Si bien es cierto que Google puede hacer una primera renderización de contenidos AJAX, no es capaz de reiterar las solicitudes asíncronas al servidor para obtener todos los datos. Es decir: ejecuta una sola vez las funciones JavaScript. Así, las webs que son altamente dependientes de AJAX, se indexan incompletas.

Frente a las quejas, Google salió al paso eligiendo la palabra “generalmente”. Generalmente puede indexar contenidos generados mediante AJAX. Pero existe la posibilidad de que eso no sea así.

¿Qué se puede hacer?

El origen de todo este embrollo se encuentra en una moda, en una manera de usar la tecnología y los lenguajes de programación que podríamos considerar errónea. AJAX fue creado para las aplicaciones en navegador, las aplicaciones móviles y, en general, todo tipo de contenidos que no deben ser indexados porque son efímeros, cambiantes a petición del usuario e irrelevantes. Alguien pensó que sería interesante implementar esta manera de trabajar en los sitios web que tienen como objetivo mostrar contenidos estables que deberían ser indexados, y aquí empezó todo.

Solución 1: Método de mejora progresiva

Si estás pensando en crear un nuevo sitio web con increíbles efectos y renderizaciones, empieza con la versión más básica de HTML y CSS posible. Luego, cuando detectes una necesidad real de crear una interacción o efecto, aplica la mejora de rendimiento/visual sobre el HTML básico. Trabaja siempre sobre una base estática simple.

Solución 2: Método de degradación ideal (también conocido como “menos es más”)

En el caso de que tu sitio web ya esté en marcha y detectes problemas con el rastreo de sus contenidos debido a funciones JS o AJAX, aplica una degradación de las funciones. Es decir, empieza a eliminar todas aquellas interacciones que sean superficiales. Es el ejercicio contrario al método 1. Elimina y simplifica el código y las funciones de tu sitio web hasta que siga siendo usable para los usuarios y rastreable para los robots.

Solución 3: Crea una versión paralela en HTML estático para el robot

A Google no le gusta que los webmasters creen contenidos específicos para el robot, por lo que no recomiendo esta solución. Este método consiste, básicamente, en usar el sistema que propuso Google en 2009, pese a estar depreciado. Se sigue usando y puede sacarte de un apuro.

Conclusión

¿Significa esto que debemos prescindir de usar AJAX en nuestras webs? No. Es desaconsejable crear una web altamente dependiente de AJAX. La carga asíncrona de contenidos es interesante y permite al usuario una rápida interacción con los datos, pero debe ser aplicada solo en el contexto de aplicaciones y en aquellos contenidos que no tienen como objetivo ser estáticos.

¡Deja el primer comentario, no seas tímido!

Únete a la discusión

Puedes utilizar los siguientes HTML tags y atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>