当数据通过uri传递时,是否可以缓存脚本?

时间:2013-02-17 12:00:24

标签: php api caching

我想知道是否可以使用PHP的APC缓存一些通过URI传递给php脚本的数据。

如果有可能,那么我想知道使用APC是否是我网站的最佳缓存解决方案。

我的网站基本上会搜索来自互联网的各种API,例如YouTube和Echonest,以获取有关音乐家的数据。当用户点击我网站上的艺术家时,艺术家的数据是从各种API中新加载的。网站上有很多艺术家的名单,所以对他们来说是一个好主意吗?目前我的网站非常慢,因为我每次用户点击新艺术家时都会不断探索API。

1 个答案:

答案 0 :(得分:0)

除非您需要绝对实时并与您的各种数据提供商同步,否则缓存通常是加速您的网站的一个非常好的主意。

APC执行操作码缓存,也可用于数据缓存,因此适用于缓存来自提供商的api响应和数据(请参阅APC的api http://www.php.net/manual/en/ref.apc.php

然而,APC运行每个Web服务器,所以如果你有一个HA设置有多个Web服务器,并且你需要所有的web服务器与缓存同步,那么你可能想看看memcache / redis用于集中式缓存。

请注意,您是否需要跨服务器同步完全是您的决定,并且取决于您的应用的性质;对此没有正确和错误的答案。仅供参考:同步缓存会产生APC没有的网络成本。

在任何情况下,无论是使用APC还是memcache / redis,每个URI模式的缓存,还是查询字符串参数都可以。这些缓存基于键/值工作,因此您可以为键设计命名约定系统,以存储相关的数据片段。例如:

$key = sprintf("%s/%s/%s/%s", $provider_name, $api_endpoint, $param1, $param2);
apc_add($key, $the_data, 300); // cache for 5mns