如何使用 PHP 缓存来自 REST API 的动态数据?

发布于 2024-10-03 20:11:08 字数 782 浏览 5 评论 0原文

更新:我决定采纳以下建议并在我的应用程序中实现 Memcached 层。现在我有另一个想法。是否可以/一个好主意在轮询上执行 AJAX 请求(例如每五分钟或十分钟)检查 Memcached,然后在 Memcached 过期时进行更新?这样,最终用户永远不会遇到延迟,因为它是在后台静默执行的。


我正在使用 Directed Edge 的 REST API 在我的 Web 应用程序上提供建议。我遇到的问题是,我在网站的多个位置查询大量推荐,并且延迟很严重,使得每个查询的页面加载时间约为 2-5 秒。看起来很糟糕。

我没有使用 Directed Edge 的 PHP 绑定,而是使用我自己编写的一些 PHP 绑定。 您可以在 GitHub 上查看绑定我正在使用 cURL 连接到他们的 API

如何缓存我收到的数据?我愿意接受任何数量的方法,只要它们相当容易实现并且相当灵活。

以下是用于获取推荐的客户端代码示例。

$de = new DirectedEdgeRest();
$item = "user".$uid;
$limit = 100;
$tags = "goal";
$recommendedGoals = $de->getRecommended($item, $tags, $limit);

UPDATE: I've decided to take the advice below and implement a Memcached tier in my app. Now I have another thought. Would it be possible/a good idea to do an AJAX request on a poll (say every five or ten minutes) that checks Memcached and then updates when Memcached has expired? This way the latency is never experienced by the end user because it's performed silently in the background.


I'm using Directed Edge's REST API to do recommendations on my web app. The problem I'm encountering is that I query for a significant number of recommendations in multiple places across the site, and the latency is significant, making the page load something like 2-5 seconds for each query. It looks terrible.

I'm not using Directed Edge's PHP bindings, and instead am using some PHP bindings I wrote myself. You can see the bindings on GitHub. I'm connecting to their API using cURL.

How can I cache the data I'm receiving? I'm open to any number of methods so long as they're fairly easy to implement and fairly flexible.

Here's an example of the client code for getting recommendations.

$de = new DirectedEdgeRest();
$item = "user".$uid;
$limit = 100;
$tags = "goal";
$recommendedGoals = $de->getRecommended($item, $tags, $limit);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嗫嚅 2024-10-10 20:11:08

您可以使用序列化和 file_put_contents 缓存到文件:

file_put_contents("my_cache", serialize($myObject));

您还可以缓存到 memcached 或数据库。

You can cache to a file using serialize and file_put_contents:

file_put_contents("my_cache", serialize($myObject));

You could also cache to memcached or a database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文