【问题标题】:REST API caching, should I use a Reverse proxy or memcache(d)?REST API 缓存,我应该使用反向代理还是 memcache(d)?
【发布时间】:2011-04-07 20:36:39
【问题描述】:

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

这种情况最好使用 Squid / Varnish 等反向代理完成,还是您会选择 memcache(d)?

【问题讨论】:

    标签: rest memcached reverse-proxy squid varnish


    【解决方案1】:

    使用位于 HTTP 层的反向代理更加透明。这意味着可以通过网络查看正在发生的事情。不好的是,其中很少有人支持缓存经过身份验证的响应,因此如果您的资源需要身份验证,它们的效率可能会下降到 0。当完全不相关的资源 B (/foo/1) 被修改时,反向代理通常也不会自动使资源 A (/foo) 过期。这是您必须以某种方式添加到解决方案中的正确行为。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-08-06
          • 1970-01-01
          • 1970-01-01
          • 2021-08-05
          • 1970-01-01
          • 1970-01-01
          • 2013-05-08
          相关资源
          最近更新 更多