我想知道是否可以使用 PHP 的 APC 缓存一些通过 URI 传递给 php 脚本的数据。
如果可能,那么我想知道使用 APC 是否是我网站的最佳缓存解决方案。
我的网站主要从互联网上探索各种 API,例如 YouTube 和 Echonest,以获取有关音乐家的数据。当用户点击我网站上的艺术家时,艺术家的数据是从各种 API 新加载的。网站上有很长的艺术家名单,所以缓存他们是个好主意吗?目前我的网站真的很慢,因为每次用户点击新艺术家时,我都会不断地探索 API。
除非您需要绝对实时并与您的各种数据提供者同步,否则缓存通常是加速您的网站的好主意。
APC 进行操作码缓存,也可用于数据缓存,因此它适用于缓存 api 响应和来自您的提供程序的数据(请参阅 APC 的 api 此处http://www.php.net/manual/en/ref.apc .php )
然而,APC 在每个 Web 服务器上运行,因此如果您有一个具有多个 Web 服务器的 HA 设置,并且您需要所有 Web 服务器在缓存方面保持同步,那么您可能需要查看 memcache/redis 以进行集中缓存反而。
请注意,是否需要跨服务器同步完全取决于您的决定,并且取决于您的应用程序的性质;对此没有正确和错误的答案。仅供参考:同步缓存会产生 APC 没有的网络 io 成本。
在任何情况下,无论是使用 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