La mejor manera de almacenar en caché los resultados de la API REST de las llamadas GET

Estoy pensando en la mejor manera de crear una capa de caché delante o como primera capa para las solicitudes GET a mi API RESTful (escrita en Ruby).

No todas las solicitudes se pueden almacenar en caché, ya que incluso para algunas solicitudes GET, la API tiene que validar el usuario / aplicación solicitante. Eso significa que necesito configurar qué solicitud es almacenable en caché y por cuánto tiempo es válida cada respuesta almacenada en caché. Para algunos casos, necesito un tiempo de caducidad muy corto, por ej. 15s y más abajo. Y debería poder dejar que las entradas de la memoria caché caduquen por la aplicación de la API incluso si aún no se ha alcanzado la fecha de caducidad.

Ya pensé en muchas soluciones posibles, mis dos mejores ideas:

primera capa de la API (incluso antes del enrutamiento), guardar la lógica de caché (para tener todas las opciones de configuración en mi mano), las respuestas y la fecha de caducidad almacenadas en Memcached

un proxy de servidor web (alto configurable), tal vez algo como Squid pero nunca he usado un proxy para un caso como este antes y no estoy del todo seguro

También pensé en una solución de caché como Varnish, usé Varnish para aplicaciones web "habituales" y es impresionante, pero la configuración es algo especial. Pero lo usaría si es la solución más rápida.

Otro pensamiento fue almacenar en caché el Índice Solr, que ya estoy usando en la capa de datos para no consultar la base de datos para la mayoría de las solicitudes.

Si alguien tiene una pista o buenas fuentes para leer sobre este tema, hágamelo saber.

Respuestas a la pregunta(5)

Su respuesta a la pregunta