Memcache处理高延迟Web服务API - 好主意?

时间:2009-12-15 23:02:15

标签: php memcached

我有一个PHP应用程序,在呈现包含这些对象的网页之前调用Web服务API来获取一些对象。在某些情况下,这些API非常慢(秒),从用户体验的角度来看,这是不可接受的。我知道我能做的两件事......

  1. 使用ajax并在后台进行这些调用
  2. 如果花费的时间过长,请暂停通话并优雅地降级
  3. 两者都不理想,所以我在考虑使用memcache(memcached的PHP扩展)来缓存我从第三方Web服务获得的对象。加载同一页面的不同用户将多次加载对象,因此这似乎有意义。

    物体相对较小(~1k)。

    这听起来像是一种合理的做法吗?我知道memcached最初是为缓解数据库负载而设计的,所以我想知道是否有一个我没见过的地方。

    感谢。

3 个答案:

答案 0 :(得分:7)

这是对memcache的完全合法使用。它不仅可以减少数据库负载,还可以用于缓存和对象存储。 :)

另请注意,PHP有两个用于memcached的接口。令人困惑的是,它们被命名为“memcache”和“memcached”。阅读这些以在两者之间进行选择:

答案 1 :(得分:3)

我强烈推荐这种情况的memcache:

  1. 减少DNS呼叫。
  2. 减少页面延迟。
  3. 减少带宽使用量。
  4. 您唯一真正的任务是确定您正在处理的数据的更改频率。这将帮助您优化缓存密钥的到期时间。

答案 2 :(得分:0)

在您的情况下,此方法可能不适合您,但您可以使用cron作业调用加载所需信息的PHP脚本,然后将其缓存到更快速的数据源(XML或数据库)。

如果信息经常更新或者需要加载大量不同的数据,这可能不起作用,但这是一个选项。我已经将这种方法用于需要花费大量时间才能完成的其他任务,并发现它是一种合理的解决方案。