Подтвердить что ты не робот

Ускорение CakePHP

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

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

В блоге, на который я чаще всего ссылаюсь, псевдокодер 8 способов повысить производительность приложений CakePHP, в котором есть отличные советы, но там должно быть больше!

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

4b9b3361

Ответ 1

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

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

  • В apache переместите код из .htaccess в главный конфигуратор сервера /vhost/whatever и установите AllowOverride None.

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

  • Как отмечает Mark Story в разделе комментариев статьи 8-го уровня, сжатие ваших активов - очень хорошая идея. Вот хороший script, который минимизирует как 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]
    

Ответ 3

Некоторые дополнительные полезные советы здесь, в том числе использование модифицированного помощника router::url для производительности, а также некоторый здравый смысл:

http://www.chainfire.eu/articles/76/CakePHP_and_performance_for_noobs_/

Ответ 4

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

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

Ответ 5

Для Minify css и Js в cakephp 2 вы можете использовать один из плагинов

https://github.com/Er-Kalpesh/CakePHP-Combinator-Plugin

который лучше всего подходит для оптимизации css и js.

Ответ 6

Мы используем Memcache для статических данных, которые поступают из базы данных, таких как баннеры, aboutus, address и многие другие. Мы удаляем файл кэша, когда данные вставляются, обновляются или удаляются. Во время запроса мы сначала проверяем файл, если он есть, затем берем данные из файла json, нет необходимости запрашивать базу данных, в противном случае запрашивать и создавать новый файл. Так что в следующий раз данные будут взяты из Json.

Ответ 7

Для CakePHP 2.x узким местом производительности может быть использование функций Hash:: (https://book.cakephp.org/2.0/en/core-utility-libraries/hash.html).

Они очень медленные при использовании сложных выражений. Это приводит к лучшей производительности, если вы пишете эту логику самостоятельно.