我有一个REST API,我想在其中缓存索引的JSON响应(get /foo)和读取操作(get /foo /1),以显着提高性能。当有帖子或放置资源上时,需要过期索引和读取结果的缓存条目,因此不提供旧内容。

这是一种最好通过诸如鱿鱼 /清漆之类的反向代理完成的场景,还是您会选择memcache(d)?

有帮助吗?

解决方案

使用位于HTTP层上的反向代理更多 透明. 。这意味着可以看到电线上发生的事情。坏事是这些支持中很少 缓存身份验证的响应, ,因此,如果您的资源需要身份验证,他们的效率可能会降至0。反向代理通常也不会自动过期资源A(/foo)当这个完全无关的资源b(/foo/1)已修改。这是您必须以某种方式添加到解决方案中的正确行为。

如果您使用Memcached,则可以解决这两个问题,因为它没有透明度要求。

其他提示

我会选择像Varnish这样的反向代理,因为您可以在不涉及缓存逻辑的情况下实现(和测试)服务,并将缓存添加为单独的层。您可以升级/重新启动服务,而Varnish为获得请求提供旧结果(非常适合可用性),并且可以根据特定的GET/POST ACTIOS设置VARNISH(清除)现有的缓存结果。

如果您想使用分布式内存,则是一个很好的解决方案。 https://github.com/cpatni/middleman 是一种反向代理,它使用模式进行缓存。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top