Uso de cache inmutable para acelerar la Web

10 abril, 2017 4:13 por

Esta es una traducción del artículo original publicado en el blog de Mozilla Hacks.

Con el lanzamiento de Firefox 49 se incluyó la característica Cache-Control: Immutable que permite a las páginas web sugerir los recursos HTTP que nunca van a cambiar. Casi al mismo tiempo, Facebook empezó a implementar ampliamente esta tecnología desde el lado del servidor. Utilizan un modelo de desarrollo de versionamiento de la URI  que funciona muy bien con inmutables. Esto ha tenido gran impacto en el rendimiento de las recargas de Facebook con Firefox. Ademas parece que otros sitios lo implementarán también.

Los beneficios de los inmutables permiten que cuando una página sea refrescada, lo cual es una tarea muy común en el escenario de los medios sociales, los elementos que fueron marcados como inmutables en la cabecera de una respuesta HTTP, no tienen que ser revalidados con el servidor. Si no se hace esto, el navegador necesita saber cuáles objectos han cambiado o no en la recarga, gastando tiempo por un lado o arriesgando incompatibilidad por el otro lado.

Para objetos pequeños, el trabajo de esta revalidación a través del código de respuesta HTTP 304 puede llevar tanto trabajo como transferir la totalidad de la respuesta.

Resulta que esto puede ahorrar mucho trabajo. Los recursos de la página tales como los archivos de JavaScript, fuentes, y hojas de estilo no cambian entre recargas. Más importante aún son las docenas de imágenes que no cambian – distintas imágenes pueden ser incluidas en el HTML, pero el contenido de cada una de ellas no cambia. De hecho, la única cosa que puede cambiar es la estructura del HTML.

Para los usuarios de Firefox recargar el contenido de Facebook ha sido un gran cambio – la petición mas rápida es aquella que nunca se hace, y es exactamente lo que está pasando todo el tiempo que se recarga una página de Facebook. En pruebas, la página principal típica puede estar inicialmente compuesta de 150 recursos. Al presionar refrescar en Firefox 49 se generan solo 25 peticiones.

Mejoras de cache inmutable

Como puedes imaginarte, esto acelera las cosas radicalmente. En pruebas, se puede reducir el tiempo de carga de una página a la mitad. Facebook también ha sido uno de los primeros en adoptar la compresión de codificación brotli. Lo usan para reducir el ancho de banda de la estructura HTML dinámica, la cual no puede ser almacenada en cache, permitiendo ahorrar 20% de los bytes transferidos cuando se compara con el antiguo estándar gzip. Brotli está disponible en Firefox desde Firefox 44.

Los servidores de Facebook también son beneficiados – una petición que nunca se hace permite ahorrar ancho de banda y uso de CPU, lo cual se puede usar para hacer el sitio mas rápido para otras peticiones.

“Este cambio  efectivamente elimina las peticiones de  revalidación de nosotros para las versiones actualizadas de Firefox las cuales, en muchos casos, pueden mejorar los tiempos de carga en segundos.” – Nathan Schloss, Ingeniero de Software, Facebook

Estamos creciendo

Facebook ha sido un gran socio en este esfuerzo. Últimamente he estado promoviendo los inmutables y otros desarrolladores también lo están adoptando.

La BBC lo ha utilizado para pruebas:

Como anécdota, la BBC observa mejoras en los tiempos de respuestas de cargas hasta un 50%, y expresa que un 90% de las peticiones están optimizadas para ser inmutables.

Implementaciones futuristas como el sistema de archivos InterPlanetary también son interesantes:

También se benefician productos como el venerable proxy Squid:

squid

Esta tecnología ha tenido suficientes pruebas en producción y realmente recomendamos su uso. Para asegurar la documentación adecuada, también se ha adaptado a los estándares de la IETF. Solo necesitas es tener una cabecera de cache para empezar con tu desarrollo.

The following two tabs change content below.
Colaborador de Mozilla Venezuela e Hispano en las áreas de desarrollo y medios sociales, entre otros. También soy desarrollador Web, Skateboarder, Profesor universitario, jugador de Playstation y PC, usuario Linux, Blogger, Geek, entre otros.

Compartir artículo:

  • ¡Participa!

    Colabora con la comunidad »
    En Mozilla lo importante son las personas. Descubre cómo puedes colaborar.

    Boletín Firefox

    Suscríbete al boletín de novedades de Firefox.

  • Descargas

    Descarga los programas de Mozilla.

    Lo más visto

    cc-by-sa