2013-07-23 23 views
0

我有点困惑如何在一个性能光学。php最好的方式来检索多个XML文件的性能缓存

我会尽量描述我的页面的过程。

首先我的网页显示我的网站用户发布的内容。新内容每秒钟都会添加一次,但每页仅显示20或50个内容。

现在我需要一些帮助: 对于我显示的每个内容,我需要检索发布该内容的用户的在线状态。此在线状态不是在我的网站上的用户的在线状态,但他的在线状态在线软件。要检索此状态,我可以下载存储在该软件的网络服务器上的json文件。

我之前说过每页显示20个内容,所以我需要下载20个json文件。那么不,我可以在调用json文件时连接user_id。所以在1个json文件中,我可以获得20个状态。 无论如何,我认为对于我的服务器的性能来说,每次有人访问我的页面时下载一个json文件是不好的。因为这个页面可以被很多人同时访问。

我想我必须做一些缓存,但我是新来的。如果有人能够向我解释如何实现这一点,我会很高兴,我的意思是这个过程,也许是主要的PHP功能使用。

非常感谢!

+0

你现在缓存json的方式有什么问题? – user20232359723568423357842364

+0

我没有缓存任何atm – yves

回答

1

最简单的方法来实现这将是一种通读缓存。这意味着您首先检查缓存(可能是memcached)是否具有当前数据,否则您会通读并执行请求,然后缓存结果。使用memcached,您可以将数据设置为过期(可能需要1-5分钟),然后代码才会尝试再次从源代码读取数据。

您需要将网络问题纳入实施过程中。您需要确保您的请求超时,否则用户可能会等待很长时间才能加载页面(如果数据不是来自缓存)

一个更强大的解决方案,可以让在线状态被异步检查。加载页面后,您将从缓存中提取数据(如果其丢失),您将触发作业以获取状态并更新缓存。你会在客户端有一个AJAX代码,它会在页面加载后更新联机状态(希望在后台完成作业后)。那些页面加载时可用的状态将正确显示,而那些正在等待的状态将显示某种“检查”状态。

+0

完美的是我正在等待的。是的,我可能会做所有的事情,所以其余的可以加载没有问题。我会去看看有关memcached,并感谢解释我的过程。我在想那样的事情,但并不确定。另外,有了memcached,我可以存储特定的信息吗?我认为最好的办法是存储user_id和在线状态。如果它不在缓存中,我下载json并缓存它。对 ? – yves

+0

Memcached是基于内存的键/值存储。所以你可以用status_userid之类的关键字来存储在线状态。 – datasage

+0

完美。谢谢!玩的开心 – yves

相关问题