Por @Alvy — 27 de Febrero de 2019

En el vídeo, el navegador de la izquierda es un navegador Chrome normal y corriente; el de la derecha utiliza un sistema experimental de caché back/forward (bfcache) que hace que al usar los botones atrás/adelante del navegador la respuesta sea instantánea. Safari, Edge, Firefox, Opera y otros navegadores implementan este tipo de bfcache desde hace tiempo, con ligeras variaciones todos ellos. Cada método tiene sus ventajas y desventajas.

La verdad es que tuve que leer mucho hace algún tiempo sobre los problemas del bfcache tras darme de cabezazos con algunas páginas y cómo se comportaban de forma distinta según el navegador que usaras. ¿Todavía estamos así a día de hoy? Pues sí.

Esto que debería existir un comportamiento «igual para todos los navegadores» de las páginas y funciones más básicas sigue siendo el pan nuestro de cada día para desgracia para diseñadores y desarrolladores de webs. En este caso se observa como problema muy típico en las páginas de tipo scroll-down (esas portadas muy largas con secciones) en las que se usan anclas (anchors, #) desde donde se salta con enlaces a otras páginas. Al navegar «yendo y volviendo» en Safari o Firefox se vuelve al punto exacto de la página en que está el ancla; todo es instantáneo y va bien. En Google Chrome en cambio suele suceder que se recarga toda la página y se vuelve al principio, para desesperación de quien está navegando.

El tema es que hay dos filosofías sobre cómo se comportan los navegadores al dibujar las páginas cuando se utiliza esta función:

  • Si se guardan en un caché en memoria todas las páginas por las que se va navegando (bfcache) las respuestas al recorrer el «historial» serán instantáneas. Esto es genial, pero requiere conservar el estado del DOM y de JavaScript, así como otras sutilezas como la Historia de Navegación, que parece algo trivial pero no lo es. Lo malo: a veces el contenido de las páginas cambia con el tiempo, y al «volver» se estaría viendo una página «antigua», no actualizada. Esto puede producir problema con datos, formularios e incluso de seguridad a veces.
  • Si no se guardan en un caché en memoria las páginas la navegación es más «realista», con datos actualizados (se comprueba si los diferentes objetos han cambiado) pero no es tan fluida, sino bastante más lenta –especialmente en móviles– dado que requiere conexiones extra al servidor para comprobar el estado de algunos de esos elementos de la página. (De hecho esto puede suponer tal problema que hay soluciones para desactivar el bfcache en muchos navegadores, a veces en las preferencias, a veces mediante plug-ins).

La solución a esta situación en Chrome no es trivial, pero podría ser como se muestra en el prototipo, una especie de «pausa» para las páginas cuando se pasa de una a otra, algo que apenas se notaría en la práctica pero sí en la velocidad. Según han calculado, el hecho de implementar el bfcache permitiría aumentar un 19 por ciento la velocidad de navegación aunque como hemos dicho hay otras consideraciones y desventajas (frescura, compatibilidad con la arquitectura multiproceso de Chrome, seguridad, etcétera). Se puede leer más sobre esto aquí: Chrome Back-forward Cache.

Relacionado:

Compartir en Flipboard Publicar / Tuitear