我有一个REST API,我希望缓存索引的JSON响应(GET/foo)和读取操作(GET/foo/1)以显着提高性能.当资源上有POST或PUT时,索引和读取结果的缓存条目需要过期,因此不会提供旧内容.
这是一个最好用Squid/Varnish等反向代理完成的场景,还是选择memcache(d)?
使用位于HTTP层上的反向代理更加透明.这意味着可以通过网络查看正在发生的事情.糟糕的是,其中很少有人支持缓存经过身份验证的响应,因此如果您的资源需要身份验证,它们的效率可能会降至0./foo
当修改完全不相关的资源B(/foo/1
)时,反向代理通常也不会自动使资源A()失效.这是你必须以某种方式添加到你的解决方案的正确行为.
如果使用memcached,这两个问题都可以解决,因为它没有透明度要求.