Beschleunigung von CakePHP

Lesezeit: 4 Minuten

Benutzer-Avatar
David Schrei

Ich bin seit etwa 2,5 Jahren ein begeisterter Fan und Benutzer von CakePHP, aber das Hauptproblem, das die meisten anderen Entwickler am Framework äußern, ist, dass es langsam ist und der Versandzyklus zu lange dauert, um es zu einer brauchbaren Lösung für Produktionsumgebungen zu machen .

Ich hoffe, dass diese Frage die Leute dazu inspiriert, ihre Tipps, Tricks und Hacks zur Beschleunigung der Leistung von CakePHP zu teilen.

Der Blogbeitrag, auf den ich mich am häufigsten beziehe, ist der von Pseudocoder 8 Möglichkeiten, die Leistung von CakePHP-Apps zu beschleunigendas tolle Tipps hat, aber da draußen muss es noch mehr geben!

Zögern Sie also nicht, Ihre Gedanken darüber zu teilen, wie Sie dieses hervorragende Framework noch wendiger machen können!

  • Der Link zu dem von Ihnen erwähnten Blogbeitrag ist nicht verfügbar! Kann jemand einen aktualisierten Link posten? Ich habe schon erfolglos gegoogelt

    – hektor87

    15. Februar 2013 um 17:44 Uhr

  • Jemand muss es Matt sagen! Stattdessen ist hier die Version des Webarchivs. web.archive.org/web/20120423115453/http://www.pseudocoder.com/…

    – David Schrei

    15. Februar 2013 um 21:14 Uhr


  • Es ist erwähnenswert, dass PHP 5.5.6 eine erhebliche Leistungssteigerung zu bieten hat, da array_merge() verbessert wurde.

    – David Schrei

    22. November 2013 um 15:52 Uhr

  • Ich habe den Vorschlag von DavidYell ausprobiert. Ich habe auch festgestellt, dass von ( twitter.com/jippi/status/403110925860761601 ). Aus meinen Env-Tests (Ubuntu 12.04.2LTS, PHP 5.3.9 Apache 2.2.22 Mysql 5.5.35 VS Ubuntu 14.04.1LTS, PHP 5.5.9 Apache 2.4.7 Mysql 5.5.41) wurde die Leistung um 80- 90 % Reaktionszeit.

    – sonicli

    12. Februar 2015 um 2:07 Uhr


Benutzer-Avatar
Joey P

Ich denke, das ist eine wirklich gute Frage. Hier sind ein paar Dinge, die ich tue, um Kuchen-Apps zu beschleunigen.

  1. Wie in den Kommentaren des verlinkten Artikels erwähnt, reduzieren Sie die $uses Array hilft ein wenig. Sie können auf zugeordnete Modelle zugreifen, indem Sie ihre Zuordnung durchlaufen. Wenn also Stadt und Adresse verknüpft sind, können Sie auf die Adresse zugreifen nach $this->City->Address anstatt beide in die einzubeziehen $uses Reihe

  2. Verschieben Sie in Apache den Code von Ihrer .htaccess in den Hauptserver config/vhost/whatever und set AllowOverride None.

  3. Verschieben Sie in einer Umgebung mit Lastenausgleich Sitzungen von der DB in den Memcache. Memcache ist verdammt einfach einzurichten, und die DB-Session-Klasse des Kuchens lässt zu wünschen übrig. Bei Hochlastanwendungen wird Sie die Garbage Collection töten, da sie am Ende etwa jede Sekunde ausgeführt wird. Außerdem ist hier ein großartiges kleines Skript, das Ihnen Statistiken über Ihre Memcache-Nutzung gibt (basierend auf apc.php).
    http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/

  4. Wie Mark Story im Kommentarbereich des 8-Wege-Artikels erwähnt, ist das Komprimieren Ihrer Assets eine sehr gute Idee. Hier ist ein gutes Skript, das sowohl js- als auch css-Dateien minimiert und verwendet werden kann, um die standardmäßige css.php zu ersetzen, die mit Cake geliefert wird.
    http://www.milesj.me/blog/read/32/CSSJSAsset-Compression-In-CakePHP

  5. Wenn aus irgendeinem Grund viele Bilder/CSS/JS gefunden werden, die nicht mehr existieren, kann es von Vorteil sein, sicherzustellen, dass diese Seiten keinen Cake 404-Fehler generieren, da sie den gesamten Cake-Dispatching-Prozess durchlaufen müssen eine Sitzung usw. Es ist so einfach wie dies zu ändern:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
    

    dazu:

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !^/(img|css|js)/(.*)$
    RewriteRule ^(.*)$ /index.php?url=$1 [QSA,L]
    

Ich habe gerade über einige weitere Tipps geschrieben, um Cakephp-Apps mit praktischem Code im Anhang drastisch zu beschleunigen:
http://www.dereuromark.de/2012/02/13/what-really-speeds-up-your-cakephp-app/

Benutzer-Avatar
Supermethode

Einige weitere gute Tipps hier, einschließlich der Verwendung eines modifizierten router::url Helfer für die Leistung sowie etwas gesunder Menschenverstand:

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

Holen Sie sich sowohl für CakePHP als auch für andere Dinge einfach einen leistungsfähigeren Server, mehr GHz und RAM. Die Preise werden jedes Jahr günstiger. Obwohl ich verstehe, dass es eng werden kann, wenn Sie sich auf einem VPS befinden.

Und manchmal ist neue Hardware billiger, als jemanden zu bezahlen, der den Code optimiert …

Für Minify CSS und Js in Cakephp 2 können Sie eines der Plugins verwenden

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

das ist am besten für die Optimierung von css und js.

Wir verwenden Memcache für statische Daten, die aus Datenbanken wie Banner, Über uns, Adresse und viele mehr stammen. Wir löschen die Cache-Datei, wenn Daten eingefügt, aktualisiert oder gelöscht werden. Zum Zeitpunkt der Abfrage suchen wir zuerst nach einer Datei. Wenn sie vorhanden ist, nehmen wir Daten aus der JSON-Datei, ohne dass eine Abfrage an die Datenbank erforderlich ist. Andernfalls fragen wir ab und erstellen eine neue Datei. Beim nächsten Mal werden also Daten von Json übernommen.

Benutzer-Avatar
michal.jakubeczy

Für CakePHP 2.x kann der Leistungsengpass ausgenutzt werden Hash:: Funktionen (https://book.cakephp.org/2.0/en/core-utility-libraries/hash.html).

Sie sind sehr langsam, wenn sie komplexe Ausdrücke verwenden. Es führt zu einer besseren Leistung, wenn Sie diese Logik selbst schreiben.

1245270cookie-checkBeschleunigung von CakePHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy