2011-05-06 117 views
9

嗨,这实际上是更多的信息请求。php缓存技术

我目前正在研究一个很大的事件列表网站,并开始考虑对正在使用的数据集进行一些缓存。

我跟APC本周被搞乱,并看到在测试过程中不过就是我努力让我的头有些真正的改善周围是试图频繁改变的缓存数据时所需要的最佳实践和技术。

例如说用户点击主页,默认情况下显示最近发生的10个事件,如果该用户登录那些事件,则是特定位置。是否有可能部署登录时的状态和频繁改变数据处理时,某种缓存系统,该系统目前允许用户“显示更多的事件:这是从数据库中拉额外的结果一个Ajax请求

我还没有真正找到了这样的事情是我不知道该怎么寻找,但我真的想知道用于该处理尤其是改变用户专用的数据和先进的数据缓存系统的技术?

我的意思是它甚至值得吗?在处理这类标准时,其他性能助推器是什么?

任何有关这方面的文章或提示和信息都会大大降低ciated!请让我知道是否需要其他信息!

回答

6

你的基本的解决方案是:

  • 文件缓存
  • 的memcached/redis的
  • APC

每个使用略有不同的目标。

文件缓存通常是您可以预渲染文件或部分文件时使用的。它用于模板解决方案,部分视图(mvc),css框架。那种东西。

Memcached和redis都差不多,除了redis更像是一个noSQL的东西。它们用于分布式缓存(多个服务器,相同的缓存数据)和用于存储会话,如果你有一组web服务器。

APC有两个好处:操作码缓存和数据缓存。然后memcached更快,但分别适用于每个服务器。


底线是:在一个巨大的项目中,您将使用它们全部。每个用于不同的任务。

+1

嘿谢谢你的答案,所以我想最好的开始就是确保数据库已经充分发挥其潜力,从那里开始工作我仍然无法得到我的头是如何实现登录的缓存技术例如,如果您登录并且您来自伦敦,那么您将如何执行缓存以获取这些结果,而这些内容是特定于用户的呢? – 2011-05-07 09:21:55

4

因此,你有操作码缓存,它通过将已编译的PHP文件保存在缓存中来加快速度。

然后你有数据缓存,在那里你保存变量或需要时间来得到这样从SQL查询构建的数据对象。

然后你有输出缓存,这就是您保存网页的整个块文件,并输出这些文件,而不是建立在每个请求的网页的该块。

我曾经写过一篇博客文章中有关如何执行输出缓存:

http://www.spotlesswebdesign.com/blog.php?id=17

如果它的具体位置,并且有十亿的位置,你最好的选择可能是输出缓存假设你有很多的磁盘空间,但是您将不得不使用自己的脑袋,因为每种情况在如何最好地应用缓存方面都有很大的不同。

+0

输出缓存这是不好的做法,缓存文件是最糟糕的缓存,可以使用。 – 2011-05-06 17:37:52

+0

@OZ_为什么这是不好的做法?如果你有一堆东西需要缓存,你将无法将所有内容缓存到内存中......光盘是下一个最好的东西。你有什么要支持你的陈述吗? – dqhendricks 2011-05-06 17:46:32

+0

OZ,为什么输出缓存不好,特别是为什么缓存文件不好。如果不是一个文件,那么在哪里? – bejonbee 2011-05-06 17:47:21

2

如果做得对,使用memcached或类似的解决方案可以大大提高网站的性能。通过直接更改缓存的数据而不是将其从数据库中重新水化,您可以完全忽略数据库中的数据,这些数据不需要保存或可以轻松重建。由于数据库通常是Web应用程序中最关键的组件,因此您可以将其卸载的任何负载都是一项奖励。

在另一方面,确保你的数据库查询是轻,高效地将有比大多数高速缓存的调整对性能有更大的影响。