2010-04-20 4 views
35

Я был поклонником и пользователем CakePHP уже около 2,5 лет, но основной ошибкой, которую придерживаются большинство разработчиков на уровне платформы, является то, что она медленная, и цикл отправки занимает слишком много времени, чтобы сделать это жизнеспособное решение для производственных сред.Ускорение CakePHP

Я надеюсь, что этот вопрос будет вдохновлять людей делиться своими советами, трюками и хаками для ускорения производительности CakePHP.

Сообщение, которое я чаще всего упоминаю здесь, http://www.pseudocoder.com/archives/8-ways-to-speed-up-cakephp-apps У кого есть отличные советы, но там должно быть больше!

Поэтому, пожалуйста, не стесняйтесь делиться своими мыслями о том, чтобы сделать этот превосходный фреймворк гораздо более ловким!

+0

Ссылка на блоге вы упоминаете вниз! Может ли кто-нибудь опубликовать обновленную ссылку? Мне уже не повезло с удачей – hectorg87

+1

Кому-то нужно сказать Мэтту! Вместо этого, вот версия веб-архива. http://web.archive.org/web/20120423115453/http://www.pseudocoder.com/archives/8-ways-to-speed-up-cakephp-apps –

+1

Стоит отметить, что PHP 5.5.6 имеет значительные повышение производительности для торта, поскольку array_merge() был улучшен. –

ответ

28

Я думаю, что это действительно хороший вопрос. Вот несколько вещей, которые я делаю для ускорения приложений для тортов.

  1. Как уже упоминалось в комментариях, связанной со статьей, вырубка на $uses массива помогает мало. Вы можете получить доступ к связанным моделям, пройдя через их ассоциацию. Так что, если город и адрес, где связаны, вы можете получить доступ к адресу на $this->City->Address вместо включения как в $uses массиве

  2. В Apache, переместите код из .htaccess в основной конфигурации сервера// виртуальный хост то, что и набор AllowOverride None.

  3. В среде с балансировкой нагрузки переместите сеансы из БД в memcache. Memcache легко настраивается, и класс сеанса DB торта оставляет желать лучшего. В приложении с высокой нагрузкой сбор мусора убьет вас, так как он заканчивается каждый второй или около того. Кроме того, здесь отличный небольшой скрипт, который дает вам статистику о вашем использовании кэша памяти (на основе из apc.php) http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/

  4. Как Марк История упоминает в разделе комментариев статьи 8 способов, сжатие ваших активов является очень хорошим идея. Вот хороший скрипт, который минимизирует файлы js и css, которые можно использовать для замены по умолчанию css.php, который поставляется в комплекте с тортом. http://www.milesj.me/blog/read/32/CSSJSAsset-Compression-In-CakePHP

  5. Если по некоторым причинам люди ударил много изображений/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] 
    
+0

grrr. Я не совсем понимаю, почему мое форматирование стало настолько запутанным. – JoeyP

1

Как для CakePHP, так и для других вещей, просто получите более мощный сервер, более ГГц и оперативную память. Цены становятся дешевле с каждым годом. Хотя, если вы находитесь на VPS, я понимаю, что все может быть жестким.

А иногда новое оборудование дешевле, чем платить за кого-то, чтобы оптимизировать код ...

+0

Именно поэтому большинство из нас «умны», чтобы использовать CakePHP. Используйте медленную структуру в сочетании с оборудованием kickass, и это даже не имеет значения. Но время для развития событий, каждый час стоит больших денег. Именно здесь начинается быстрое развитие. Поэтому я часто вижу, как люди оптимизируются с неправильным концом. Правильный ответ по-прежнему остается уже выбранным, поскольку вопрос, вероятно, по-прежнему заключался в том, как оптимизировать производительность кода (и использовать одно и то же оборудование). – mark