Me preguntaba cuáles son las diferencias entre el almacenamiento en caché/guardar datos en la memoria dentro de un componente de la interfaz de usuario frente al almacenamiento en caché en el navegador del cliente con respecto al encabezado cache-control de HTTP. Creo que las bibliotecas como la consulta de reacción hacen lo primero: almacena los datos obtenidos dentro de una tienda global y permite a los usuarios usar staleTime y cacheTime para ajustar la frescura de los datos.
Pero me pregunto si podemos lograr el almacenamiento en caché aprovechando el caché del navegador: ¿cuáles son los pros y los contras de cada enfoque?
Me parece problemático que si implementamos un mecanismo de caché en memoria para un componente o biblioteca como React query pero entra en conflicto con HTTP-Cache - dice Cache-control: no-store , no deberíamos almacenarlo en caché en el componente o la biblioteca . Por ejemplo, un código QR con una vigencia de 30s. Me pregunto si hay una manera de generar automáticamente la configuración para el componente o la biblioteca a partir de los encabezados de respuesta http que envía el backend. Pero no estoy seguro de cómo puedo hacer eso.
El caché del navegador HTTP y el caché en memoria (también conocido como estado de la aplicación) son dos conceptos diferentes.
La memoria caché del navegador HTTP se utiliza para acelerar las interacciones de los clientes con los servidores. Su contenido son blobs binarios/texto. El estado de la aplicación son datos estructurados que sus componentes comparten y usan para representar la interfaz de usuario.
Para su ejemplo de código QR, probablemente pueda implementar el componente de una manera que obtenga los datos del código QR en el renderizado, esto usa solo el caché del navegador. Pero si necesita compartir los resultados obtenidos con otros componentes, por ejemplo, información de usuario actual, deberá colocarla en algún tipo de caché de la aplicación para que otros componentes puedan aprovechar el mismo estado de la aplicación y generar resultados consistentes.