REST API缓存,我应该使用反向代理还是memcache(D)?
-
30-09-2019 - |
题
我有一个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 是一种反向代理,它使用模式进行缓存。
不隶属于 StackOverflow