Pregunta

Tengo una API REST donde me gustaría para almacenar en caché la respuesta JSON del índice (GET / foo) y las acciones de lectura (GET / foo / 1) para aumentar significativamente el rendimiento. Cuando hay un POST o PUT en un recurso de las entradas de caché para el índice y leer los resultados deben ser vencido, el contenido de edad por lo que no se sirve.

¿Es esta una situación que se hace mejor con un proxy inverso como el calamar / laca o elegirías memcache (d)?

¿Fue útil?

Solución

Uso de un proxy inverso que se encuentra en la capa de HTTP es más transparente . Eso significa que es posible ver lo que está pasando a través del cable. Lo malo es que pocos de estos apoyo almacenamiento en caché las respuestas autenticados , por lo que su eficacia puede caer a 0 si sus recursos requieren autenticación. proxies inversos también por lo general no caducan automáticamente el recurso A (/foo) cuando se modifica este recurso B completamente ajenos (/foo/1). Eso es correcto comportamiento que habría que añadir a la solución de alguna manera.

Estos dos problemas se pueden resolver si se utiliza MemCached, ya que no tiene el requisito de transparencia.

Otros consejos

Me iría por un proxy inverso como barniz, ya que puede poner en práctica (y prueba) su servicio sin la participación de la lógica de caché, y añadir el almacenamiento en caché como una capa separada. Puede actualizar / reiniciar el servicio, mientras que el barniz sirve resultados viejas de petición GET (ideal para la disponibilidad), y es fácil de configurar reglas de barniz para invalide (purga) resultados de caché existente, basado en acciones GET / POST específicos.

Si desea emplear memoria distribuida memcached es una buena solución. https://github.com/cpatni/middleman es un proxy inverso que utiliza memcached para almacenar en caché.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top