Entonces, ¿qué deberíamos almacenar en caché? Podemos almacenar en caché recursos estáticos como imágenes, archivos multimedia, scripts y CSS. Además, podemos almacenar datos de la aplicación, como la lista de artículos o publicaciones, para mejorar la velocidad de carga. Sin embargo, debemos ser cautelosos con el almacenamiento en caché de datos que pueden quedar obsoletos, como los saldos de los usuarios. El contenido seguro también debe manejarse con cuidado. Exploremos nuestras opciones de almacenamiento en caché. Al emitir una solicitud, la primera parada es el service worker, que puede interceptar solicitudes de red y cargar respuestas desde su caché. Si el service worker no puede manejar la solicitud, el navegador puede servir contenido desde su propia caché. Si no, la solicitud continúa al CDN o al servidor, que proporciona información adicional sobre el almacenamiento en caché mediante encabezados. El service worker, un script de JavaScript, se ejecuta en segundo plano y puede interceptar solicitudes de red. Hay estrategias comunes disponibles para el service worker, como network first y tail while revalidate. Si el service worker no puede devolver los datos, la caché del navegador es la siguiente parada.
Entonces, ¿qué deberíamos almacenar en caché? Entonces, los recursos estáticos son candidatos naturales para el almacenamiento en caché, imágenes, archivos multimedia, scripts y CSS. Pero también es importante notar que también podemos almacenar datos de la aplicación, como la lista de los últimos artículos o publicaciones, o configuraciones predeterminadas que pueden ayudarnos a cargar más rápido. No queremos almacenar datos que no serán correctos cuando estén desactualizados, por ejemplo, mostrar un saldo de usuario. Si mostramos un valor desactualizado, el usuario no estará contento.
También debemos ser cuidadosos con el almacenamiento en caché de contenido seguro, porque no queremos que se muestre a menos que el usuario esté autenticado. ¿Dónde podemos almacenar en caché? ¿Cuáles son nuestras opciones de almacenamiento en caché? Para eso, veamos el recorrido de la solicitud. Cuando emitimos una solicitud desde una aplicación web, esperaría que fuera al servidor y obtuviera el valor de vuelta, ¿verdad? En realidad, tenemos varias paradas en el camino que pueden ayudarnos a almacenar en caché los datos. La primera parada es el service worker. Puede interceptar todo tipo de solicitudes de red y puede cargar la respuesta desde su caché. El service worker, si no puede manejar la solicitud, el navegador puede entonces servir el contenido desde su propia caché. Y si no, la solicitud continuará a la siguiente parada, el CDN. Se recomienda tener un CDN en su lugar, y si el recurso está almacenado en caché allí, es genial. Y si no, irá todo el camino hasta el servidor. Y el servidor, al devolver el contenido, también proporciona información adicional sobre el almacenamiento en caché. Lo hace usando diferentes encabezados que discutiremos más adelante.
Veamos nuestra primera parada, el service worker. El service worker es solo un script, un JavaScript. Se ejecuta en segundo plano fuera de tu aplicación, y puede hacer muchas cosas, incluyendo interceptar solicitudes de red y decidir si devolver el contenido desde la caché o no. Aquí hay un ejemplo de un script que escucha una solicitud de fetch y devuelve datos desde la caché. Hay estrategias muy comunes que puedes usar dentro de un service worker. No necesitas reimplementarlas. Puedes importarlas desde una biblioteca y paquete de NPM y usarlas. Ofrecen una variedad de opciones. Por ejemplo, network first es la básica. Esta estrategia intenta obtener datos de la red. Y si el servidor no devuelve el contenido, tomará el último valor de la caché. Otra útil es tail while revalidate. Esta estrategia sirve el contenido sin conexión desde la caché inmediatamente, pero también emite una nueva solicitud, y cuando los resultados regresan, actualiza su contenido para el usuario. Si el service worker no puede devolver los datos, la siguiente parada es la caché del navegador. La caché HTTP del navegador es un mecanismo incorporado en el navegador.
Comments