我是CakePHP的狂热粉丝和用户已经有2.5年了,但是大多数开发人员在这个框架上的主要缺陷是它很慢,而且调度周期太长,使它成为生产环境中可行的解决方案。
我希望这个问题能激励人们分享他们的技巧、窍门和窍门来提高CakePHP的性能。
我最常提到的博客文章是pseudocoder的8 Ways to Speed Up the Performance of CakePHP Apps,它有很好的提示,但肯定还有更多!
因此,请随时分享您的想法,使这个优秀的框架,更灵活!
我是CakePHP的狂热粉丝和用户已经有2.5年了,但是大多数开发人员在这个框架上的主要缺陷是它很慢,而且调度周期太长,使它成为生产环境中可行的解决方案。
我希望这个问题能激励人们分享他们的技巧、窍门和窍门来提高CakePHP的性能。
我最常提到的博客文章是pseudocoder的8 Ways to Speed Up the Performance of CakePHP Apps,它有很好的提示,但肯定还有更多!
因此,请随时分享您的想法,使这个优秀的框架,更灵活!
8条答案
按热度按时间fivyi3re1#
我认为这是一个非常好的问题。下面是我为加快蛋糕应用所做的几件事。
1.正如链接文章的评论中提到的,减少
$uses
数组会有一些帮助。您可以通过查看它们的关联来访问关联的模型g。因此,如果City和Address是关联的,您可以通过$this->City->Address
来访问address,而不是将两者都包含在$uses
数组中1.在apache中,将代码从
.htaccess
移到主服务器config/vhost/whatever中,并设置AllowOverride None
。1.在负载平衡的环境中,将会话从数据库移动到memcache。Memcache非常容易设置,而cake的数据库会话类还有很多需要改进的地方。在高负载应用程序中,垃圾收集会杀死你,因为它每隔一秒左右就会运行一次。另外,这里有一个很棒的小脚本,它可以提供关于memcache使用情况的统计信息(基于apc.php)http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/
1.正如Mark Story在8 ways文章的评论部分提到的,压缩资产是一个非常好的主意。
1.如果由于某种原因,人们点击了很多不存在的图片/css/js,它可能是有益的,以确保这些页面不生成一个蛋糕404错误,因为它必须通过整个蛋糕调度过程,生成一个会话等。
更改为:
bvuwiixz2#
我只是写了一些技巧,以大幅加快cakephp应用程序与一些实用的代码附加:http://www.dereuromark.de/2012/02/13/what-really-speeds-up-your-cakephp-app/
jexiocij3#
这里还有一些更好的提示,包括使用修改后的
router::url
帮助器来提高性能,以及一些常识:http://www.chainfire.eu/articles/76/CakePHP_and_performance_for_noobs_/
tjjdgumg4#
对于CakePHP和其他东西,只要得到一个更强大的服务器,更多的GHz和RAM。价格一年比一年便宜。虽然如果你是在VPS上,我理解事情可能会很紧张。
有时候,新硬件比花钱请人优化代码更便宜...
2admgd595#
对于cakephp 2中的Minify css和Js,您可以使用以下插件之一
https://github.com/Er-Kalpesh/CakePHP-Combinator-Plugin
这对于CSS和JS的优化是最佳的。
d5vmydt96#
我们使用Memcache来处理来自数据库的静态数据,如横幅、广告、地址等。当数据被插入、更新或删除时,我们会删除缓存文件。在查询时,我们首先检查文件,如果存在,则从json文件中获取数据,无需查询到数据库,否则会查询并创建新文件。因此,下次数据将从Json中获取。
wz1wpwve7#
对于CakePHP 2.x,性能瓶颈可能是
Hash::
函数(https://book.cakephp.org/2.0/en/core-utility-libraries/hash.html)的使用。当使用复杂的表达式时,它们的速度非常慢。如果你自己编写这个逻辑,它会带来更好的性能。
oipij1gg8#
我们在一个项目中安装了Vue。唯一的问题是它升级到了Vue2,我还没有找到让Vue3工作的方法。我们的数据库非常大,图片也很重,开发服务器上的速度也很不错,所以当我们把它转移到实时服务器上时,速度会更快。如果你想了解这一点,我会推荐它。你仍然使用cakePHP作为控制器,你通过 AJAX 传递数据,所以从技术上讲,你加快了cake的速度,我的意思是,它肯定比仅仅使用原生Cake快。