1

我在我的网站中使用 onapp api,在一个页面中它正在获取 onapp 中的所有服务器。对于某些用户来说,这个列表非常大,在某些情况下它会扩展到数千个。响应不仅是数据,而且还包含其他信息。我也在做分页。因此,必须调用每个 api 并填充数据。现在为了提高速度,我正在编写对文件的响应并从中读取。但这也需要时间。反正有没有加快这个操作。

在文件缓存之前,每页大约需要 45 秒,现在减少到 25 秒。但这也是一个很高的值。我正在使用 Symfony 框架。我正在使用以下代码将数据缓存到文件。

   $userStatisticsCached=unserialize(file_get_contents($filePath));
    if(is_null($userStatisticsCached)||$userStatisticsCached==false){
        $userStatistics = $statisticsInstance->getList(1);
        file_put_contents($filePath, serialize($userStatistics));
    }
    else {
        $userStatistics=$userStatisticsCached;
    }

有没有更好的方法以更少的加载时间实现相同的输出?

4

1 回答 1

2

第一:加载一个页面需要 45 秒。您进行了多少 API 调用?

第二:哇,所有 API 调用已经缓存在文件系统中的 25 秒也绝对是巨大的。您的页面加载执行了多少文件系统查找?在测量 25 秒页面加载时,您确定所有 API 请求都被缓存了吗?

内存缓存: 根据数据的大小,我当然建议将缓存的数据存储在内存中以加快缓存查找速度。对于大约 1GB 或更少的缓存,这应该不是问题(取决于您运行的服务器硬件/托管服务提供商)。一个很好的首选是Memcache,它也恰好具有良好的PHP 支持

运行 Memcache:在您的计算机上本地工作时,您自己安装应该没有问题memcached。当您将网站上传到服务器时,您需要确保 Memcache 在同一台服务器上运行,或者向您的服务器托管服务提供商询问有关如何连接到他们的 Memcache 服务器的详细信息。大多数 PHP 托管服务提供商提供 Memcache 作为托管的一部分。如果他们不这样做,您可以使用像MemCachier这样的托管远程 memcache 提供程序,尽管远程服务器的延迟会再次减慢您的缓存查找速度。

于 2012-09-18T21:55:22.690 回答