es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Almacenar en caché las solicitudes HTTP en un entorno sin servidor.

Tengo una función lambda sin servidor que realiza lo siguiente:
* Comienza con un conjunto de ids en la consulta (example.com?ids=a,b,c)
* Hace una solicitud HTTP a otro servicio web (basado en los ids proporcionados) que no controlo
* Renderiza el sitio web basado en la respuesta del otro servicio web

Todo funciona bien, sin problemas hasta ahora.

Hoy introduje una nueva interfaz de usuario para mi sitio web. El usuario puede alternar entre “una vista de tabla” y “una vista de lista”.
Dado que estas diferentes vistas también se pueden controlar a través de otro parámetro de consulta, hago una simple “redirección” a mi propio sitio web. Suponiendo que actualmente estoy viendo la vista de tabla, para el cuadro de texto “mostrar vista de lista” tengo un simple <a href="example.com?ids=a,b,c&view=list">[...]<a>.

Esta redirección conduce, por supuesto, a otra llamada al “otro servicio web”. Incluso si puedo estar bastante seguro de que el contenido no ha cambiado desde mi última llamada (hace solo unos segundos/minutos).

Mi pregunta es:

¿Hay alguna manera de almacenar en caché las solicitudes HTTP desde mi lambda para que no hagamos la llamada nuevamente?
Tengo cierto conocimiento de las cabeceras Cache-Control, pero como es un entorno sin servidor, podría (y probablemente lo hará?! No lo sé, pero ni siquiera me importa 😅) estar en otra máquina sin esta caché. Y por lo tanto, no será un acierto de caché y de todas formas hará las solicitudes.

Por favor, no respondas con soluciones como “Usa JavaScript para cambiar la interfaz de usuario”. Sé que esto es posible, pero mi pregunta principal es cómo (e incluso si puedo) almacenar en caché tales solicitudes en un entorno sin servidor.

¡Gracias de antemano!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible cachear las solicitudes HTTP en un entorno sin servidor, y el encabezado Cache-Control puede ayudar con esto. Puedes establecer el encabezado Cache-Control en la respuesta de la solicitud HTTP original para especificar cuánto tiempo debe ser cachada la respuesta, y luego las solicitudes subsiguientes pueden comprobar la caché antes de realizar una nueva solicitud.

    Sin embargo, como mencionaste, esto puede no funcionar como se espera en un entorno sin servidor, ya que la función puede ejecutarse en una máquina diferente y es posible que la caché no esté disponible. En este caso, es posible que desees considerar el uso de una caché compartida, como un CDN, o una base de datos como Redis, que se puede acceder desde cualquier instancia de la función lambda.

    Otra solución podría ser almacenar la respuesta del otro servicio web en una base de datos, junto con una marca de tiempo de cuándo fue actualizada por última vez, y utilizar eso para determinar si se necesita una nueva solicitud o si se puede usar en su lugar la respuesta en caché.

    En general, existen varios enfoques que puedes tomar para cachear las solicitudes HTTP en un entorno sin servidor, y la mejor solución dependerá de los requisitos específicos de tu aplicación.

Comments are closed.