Я был поклонником и пользователем CakePHP уже около 2,5 лет, но основной ошибкой, которую придерживаются большинство разработчиков на уровне платформы, является то, что она медленная, а цикл отправки занимает слишком много времени, чтобы сделать ее жизнеспособным решением для производственных сред ,
Я надеюсь, что этот вопрос заставит людей поделиться своими советами, трюками и взломами для ускорения производительности CakePHP.
Сообщение в блоге, которое я чаще всего упоминаю, находится здесь, http://www.pseudocoder.com/archives/8-ways-to-speed-up-cakephp-apps. У которого есть отличные советы, но там должно быть больше!
Поэтому, пожалуйста, не стесняйтесь делиться своими мыслями о том, чтобы сделать эту превосходную структуру намного более проворной!
Я думаю, что это действительно хороший вопрос. Вот несколько вещей, которые я делаю для ускорения приложений для тортов.
Как упоминалось в комментариях связанной статьи, сокращение массива $uses
помогает немного. Вы можете получить доступ к связанным моделям, пройдя через их ассоциацию. Так что если City и Address, где они связаны, вы можете получить доступ к адресу $this->City->Address
вместо того, чтобы включать оба в массив $uses
В apache переместите код из вашего .htaccess
в главную конфигурацию сервера / vhost / whatever и установите AllowOverride None
.
В сбалансированной нагрузке среде переместите сеансы из базы данных в memcache. Memcache легко настраивается, и класс сеанса DB торта оставляет желать лучшего. В приложении с высокой нагрузкой сбор мусора убьет вас, так как он заканчивается каждый второй или около того. Кроме того, вот большой маленький скрипт, который дает вам статистику о вашем использовании memcache (на основе apc.php) http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/
Как отмечает Mark Story в разделе комментариев статьи 8-го порядка, сжатие ваших активов – очень хорошая идея. Вот хороший скрипт, который минимизирует файлы js и css, которые можно использовать для замены по умолчанию 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/
Как для CakePHP, так и для других, просто получите более мощный сервер, более ГГц и оперативную память. Цены становятся дешевле с каждым годом. Хотя, если вы находитесь на VPS, я понимаю, что все может быть жестким.
И иногда новое оборудование дешевле, чем платить кому-то за оптимизацию кода …
Некоторые дополнительные полезные советы здесь, в том числе использование модифицированного router::url
helper для производительности, а также некоторый здравый смысл:
http://www.chainfire.eu/articles/76/CakePHP_and_performance_for_noobs_/
Для Minify css и Js в cakephp 2 вы можете использовать один из плагинов
https://github.com/Er-Kalpesh/CakePHP-Combinator-Plugin
который лучше всего подходит для оптимизации css и js.