php缓存技术

php缓存技术,php,database,caching,memcached,apc,Php,Database,Caching,Memcached,Apc,嗨,这更像是一个信息请求 我目前正在一个相当大的事件列表网站上工作,并开始考虑对正在使用的数据集进行一些缓存 这周我一直在搞APC,在测试过程中看到了一些真正的改进,但我努力想弄清楚的是,在尝试缓存频繁更改的数据时需要的最佳实践和技术 例如,假设用户点击主页,默认情况下显示最近发生的10个事件,如果该用户登录,则这些事件是特定于位置的。在处理频繁更改的登录状态和数据时,是否可以部署某种缓存系统?系统当前允许用户“显示更多事件:这是一个ajax请求,用于从数据库中提取额外结果 我还没有在这方面找到

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

我目前正在一个相当大的事件列表网站上工作,并开始考虑对正在使用的数据集进行一些缓存

这周我一直在搞APC,在测试过程中看到了一些真正的改进,但我努力想弄清楚的是,在尝试缓存频繁更改的数据时需要的最佳实践和技术

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

我还没有在这方面找到任何东西,因为我不确定要搜索什么,但我真的很想知道高级缓存系统所使用的技术,特别是处理更改的数据和特定于用户的数据

我的意思是,这样做值得吗?其他绩效提升者在处理此类标准时是否值得


我们将非常感谢您提供有关这方面的任何文章、提示和信息!!如果需要任何其他信息,请告诉我!!

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

然后是数据缓存,您可以在其中保存变量或对象,这些变量或对象需要时间才能获得类似于SQL查询生成的数据

然后是输出缓存,即将整个网页块保存在文件中,并输出这些文件,而不是在每次请求时构建网页块

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


如果是位置特定的,并且有10亿个位置,那么最好的选择可能是输出缓存(假设您有大量的磁盘空间),但您必须使用您的头来获得最佳效果,因为在如何最好地应用缓存方面,每种情况都非常不同。

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


另一方面,确保数据库查询尽可能轻且高效,这将比大多数缓存调整对性能产生更大的影响。

您的基本解决方案是:

  • 文件缓存
  • memcached/redis
  • APC
每一个都用于略有不同的目标

文件缓存通常是在可以预渲染文件或部分文件时使用的东西。它用于模板解决方案、局部视图(mvc)、css框架。诸如此类的东西

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

APC有两个优点:操作码缓存和数据缓存。比memcached快,但对每台服务器都单独工作



底线是:在一个大型项目中,您将使用所有这些缓存。每一个都用于不同的任务。

输出缓存这是一种不好的做法,而在文件中缓存是最糟糕的缓存,可以使用。@OZ_uu为什么这是一种不好的做法?如果您有大量的东西要缓存,您将无法将所有东西都缓存到内存中…光盘是下一个最好的东西。您有吗有什么可以支持你的陈述吗?OZ,为什么输出缓存不好,特别是为什么缓存到文件不好。如果不是到文件,那么在哪里?@dqhendricks很好..因为。你想缓存什么?页面的HTML标记?它们几乎永远不会更改,所以从一个文件(模板)读取它们并放到另一个(“缓存”)这只是浪费资源。应该只缓存数据,而不是表示。这样你的缓存就不会被垃圾填满。@somethingkindawired then memory.File-系统中最慢的部分。在大多数情况下,从数据库中获取数据要比从文件缓存中读取快(而且因为数据库使用内存进行缓存).嘿,谢谢你的回答,所以我想最好的开始是确保数据库被优化到它的全部潜力,从那里开始,我仍然不能弄清楚的是,你如何为登录状态实施缓存技术。例如,如果你登录并且你来自伦敦,你将如何为登录状态实施缓存当内容特定于用户时,ose结果有意义吗?