我一直是CakePHP的忠实拥护者和用户,已有2.5年的历史了,但是大多数其他开发人员在该框架上遇到的主要错误是它运行缓慢,并且调度周期花费的时间太长,无法使其成为生产环境的可行解决方案。
我希望这个问题能激发人们分享他们的提示,技巧和黑客技巧,以提高CakePHP的性能。
我最常提到的博客文章是伪编码器的8种提高CakePHP Apps性能的方法,虽然有很多技巧,但这里还有更多技巧!
因此,请随时分享您的想法,以使这个出色的框架更加灵活!
我认为这是一个非常好的问题。这是我为加快蛋糕应用程序速度所做的几件事。
-
如链接文章的评论中所述,减少
$uses
数组有一点帮助。您可以通过关联模型访问关联模型。因此,如果“城市”和“地址”关联在一起,则可以通过访问地址,$this->City->Address
而不是将两者都包含在$uses
数组中 -
在apache中,将代码从中移动
.htaccess
到主服务器config / vhost / whatever并进行设置AllowOverride None
。 -
在负载平衡的环境中,将会话从数据库移至内存缓存。Memcache非常容易设置,蛋糕的DB会话类还有很多不足之处。在高负载的应用程序中,垃圾收集将杀死您,因为它最终每秒运行一次。此外,这是一个很棒的小脚本,可为您提供有关内存缓存使用情况的统计信息(基于apc.php)
http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/ -
正如Mark Story在8种方式的文章的评论部分中提到的那样,压缩资产是一个非常好的主意。这是一个最小化js和css文件的好脚本,可用于替换cake附带的默认css.php。
http://www.milesj.me/blog/read/32/CSSJSAsset-Compression-In-CakePHP -
如果由于某些原因人们点击了许多不再存在的图像/ css / js,确保这些页面不会产生蛋糕404错误可能是有益的,因为它必须经历整个蛋糕调度过程,从而产生会话等。只需更改以下内容即可:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
对此:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !^/(img|css|js)/(.*)$ RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
我刚刚写了一些更多的技巧,以附加一些实用的代码来大大加快cakephp应用程序的速度:http :
//www.dereuromark.de/2012/02/13/what-really-speeds-up-your-cakephp-app/
这里还有一些其他好的技巧,包括使用改进的router::url
助手来提高性能以及一些常识:
http://www.chainfire.eu/articles/76/CakePHP_and_performance_for_noobs_/
无论是使用CakePHP还是其他工具,都可以获得功能更强大的服务器,更多GHz和RAM。价格每年便宜。虽然如果您使用的是VPS,但我知道事情可能会很紧张。
有时,新硬件要比花钱让别人优化代码便宜……
对于cakephp 2中的Mins css和js,您可以使用以下插件之一
https://github.com/Er-Kalpesh/CakePHP-Combinator-Plugin
最适合优化CSS和JS。
我们将Memcache用于来自数据库的静态数据,例如横幅,aboutus,地址等等。当数据被插入,更新或删除时,我们将删除缓存文件。在查询时,我们首先检查文件是否存在,然后从json文件中获取数据,而无需查询到数据库,否则查询并创建新文件。因此,下一次数据将来自Json。
对于CakePHP 2.x,性能瓶颈可能是使用Hash::
函数(https://book.cakephp.org/2.0/en/core-utility-libraries/hash.html)。
使用复杂表达式时它们非常慢。如果您自己编写此逻辑,则可以提高性能。
文章标签:cakephp , performance , php
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
评论已关闭!