php缓存技术

时间:2011-05-06 17:02:47

标签: php database caching memcached apc

嗨,这更像是一个信息请求。

我目前正在开发一个相当大的活​​动列表网站,并开始考虑对正在使用的数据集进行一些缓存。

本周我一直在搞乱APC,并且在测试期间看到了一些真正的改进,但是我正在努力解决的问题是尝试缓存经常变化的数据时所需的最佳实践和技术。

例如,用户点击主页,默认显示最近发生的10个事件,如果该用户已登录,则这些事件是特定于位置的。在处理登录状态和频繁更改的数据时是否可以部署某种缓存系统,系统当前允许用户“显示更多事件:这是一个从数据库中获取额外结果的ajax请求。” >

我还没有真正发现任何内容,因为我不确定要搜索什么,但我真的很想知道用于高级缓存系统的技术,这些技术特别针对用户更改的数据和特定数据?

我的意思是它值得吗?在处理这类标准时,其他绩效提升者是什么?

任何文章或提示和信息将非常感谢!!如果需要任何其他信息,请告诉我!!

3 个答案:

答案 0 :(得分:7)

您的基本解决方案是:

  • 文件缓存
  • 分布式缓存/ redis的
  • APC

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

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

Memcached和redis都或多或少相等,除了redis更像是面向noSQL的东西。如果您有Web服务器集群,它们用于分布式缓存(多个服务器,相同的缓存数据)和用于存储会话。

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


底线是:在一个巨大的项目中,你将使用所有这些。每个人都有不同的任务。

答案 1 :(得分:4)

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

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

然后你有输出缓存,你可以将整个网页块保存在文件中,然后输出这些文件,而不是在每个请求上构建你网页的那个块。

我曾写过一篇关于如何进行输出缓存的博文:

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

如果它是位置特定的,并且有十亿个位置,那么假设你有大量的磁盘空间,最好的选择可能就是输出缓存,但是你必须使用你的头来做最好的,因为每种情况都非常不同当谈到如何最好地应用缓存。

答案 2 :(得分:2)

如果操作正确,使用 memcached 或类似解决方案可以极大地提升网站性能。通过直接更改缓存数据而不是从数据库中重新水化,您可以完全绕过数据库,以获取不需要保存或可以轻松重建的数据。由于数据库通常是Web应用程序中最关键的组件,因此任何可以取消它的负载都是一种额外的好处。

另一方面,确保数据库查询尽可能轻松高效,与大多数缓存调整相比,对性能的影响要大得多。