Php 现在不依赖memcached这样的缓存系统(用于动态站点)是疯狂的吗?

Php 现在不依赖memcached这样的缓存系统(用于动态站点)是疯狂的吗?,php,python,memcached,scalability,Php,Python,Memcached,Scalability,我刚刚回顾了我客户的一个应用程序,它使用了一些过时的php框架,根本不依赖缓存,并且几乎完全依赖于数据库 我想我会从头重写它,因为它已经过时了,在这次重写中,我想实现一个缓存系统。如果有人之前做过这件事,我能得到一些建议,那就太好了 重写将在PHP或Python中完成 如果我能在实现之前和之后分析一下,那就太好了 我有自己的服务器,所以我不受共享主机的限制 既然Python是您的选择之一,我会选择Django。内置缓存机制,我一直在使用它来帮助我进行开发/评测 顺便说一句,memcached并

我刚刚回顾了我客户的一个应用程序,它使用了一些过时的php框架,根本不依赖缓存,并且几乎完全依赖于数据库

我想我会从头重写它,因为它已经过时了,在这次重写中,我想实现一个缓存系统。如果有人之前做过这件事,我能得到一些建议,那就太好了

  • 重写将在PHP或Python中完成
  • 如果我能在实现之前和之后分析一下,那就太好了
  • 我有自己的服务器,所以我不受共享主机的限制

    • 既然Python是您的选择之一,我会选择Django。内置缓存机制,我一直在使用它来帮助我进行开发/评测

      顺便说一句,memcached并不像您描述的那样工作。它将唯一键映射到内存中的值,与.csh文件或数据库查询无关。存储在值中的内容就是要缓存的内容


      哦,只有当存在(或将要出现)性能问题时,缓存才有价值。如果您不需要缓存,“不依赖”缓存没有什么错。过早优化是99%的邪恶

      如果您的站点性能良好,则没有理由添加缓存。许多站点都可以完全不使用任何缓存,也可以使用基于文件系统的缓存。只有超高流量的网站才需要memcached


      “疯狂”的是代码体系结构(或缺乏体系结构),这使得在后者中添加缓存变得困难

      当缓存工作正常(=高命中率)时,它是为数不多的真正有助于延迟的通用技术之一,而问题中较难的部分通常被描述为“性能”。您可以通过在问题上投入更多硬件来提高QPS(每秒查询数)性能指标,但延迟不起作用(即,如果您让九位母亲来处理它,它不会只花一个月的时间来生孩子;-)


      但是,缓存使用的主要资源通常是内存(RAM或磁盘,视情况而定)。正如您在一篇评论中提到的,您观察到的唯一性能问题是内存使用,缓存不会有任何帮助:它只会将内存的一部分指定用于缓存目的,从而使可用的“普通基金”更少。作为加利福尼亚州的一名居民,我亲眼目睹了当太多的资源被指定使用时会发生什么,我不能问心无愧地推荐这样一个行动方案!)

      根据代码库的特定性质和流量模式,您甚至可能不需要重新编写整个站点。如果99.9%的页面请求都可以通过缓存绕过,那么效率极低的代码就没什么大不了的了


      在选择PHP或Python时,请确保您确定了站点的宿主位置(或者您是否可以进行调用)。我的许多客户机已经安装在Web服务器上,Python不是一个选项。您还应该确保要与之接口的任何数据库/外部程序都能在PHP或Python中得到很好的支持。

      嗯,我的服务器的内存使用率确实有点高,在512 MB的片上几乎达到了最大值,我想这会有所帮助。buh?在内存中缓存东西如何减少内存占用?我完全同意。缓存,尤其是分布式缓存,仅在高流量系统中才有必要。否则,它的开销比其他任何东西都大。缓存(尤其是大的memcached)也会增加架构的复杂性。如果您当前的应用程序足够快,那么它将成为一个需求预测的问题。你是否能得到比现在更多的流量?圣诞节高峰或当地报纸上的一篇文章会让你的工作量迅速增加吗?如果这些都不适用,那么为了简单而牺牲可伸缩性是一个不错的选择。我在slicehost上有自己的切片,所以我可以使用任何东西:)