Hier sind ein paar persönliche Must-dos, die ich immer in meinen LAMP-Anwendungen einrichte.
-
Installieren Sie mod_deflate für Apache und verwenden Sie nicht die gzip-Handler von PHP. Mit mod_deflate können Sie statischen Inhalt wie Javascript/CSS/statisches HTML sowie die übliche dynamische PHP-Ausgabe komprimieren, und es ist eine Sache weniger, um die Sie sich in Ihrem Code kümmern müssen.
-
Seien Sie vorsichtig mit .htaccess-Dateien! Das Aktivieren von .htaccess-Dateien für Verzeichnisse in Ihrer App bedeutet, dass Apache das Dateisystem ständig scannen und nach .htaccess-Anweisungen suchen muss. Es ist viel besser, Direktiven innerhalb der Hauptkonfiguration oder einer vhost-Konfiguration zu platzieren, wo sie einmal geladen werden. Jedes Mal, wenn Sie eine Zugriffsdatei auf Verzeichnisebene loswerden können, indem Sie sie in eine Hauptkonfigurationsdatei verschieben, sparen Sie Zeit beim Festplattenzugriff.
-
Bereiten Sie die Datenbankschicht Ihrer Anwendung vor, um eine Art Verbindungsmanager zu verwenden (ich verwende für die meisten Anwendungen einen Singleton). Dies ist nicht sehr schwierig, und die Anzahl der von Ihrer Anwendung geöffneten Datenbankverbindungen zu reduzieren, spart Ressourcen.
-
Wenn Sie glauben, dass Ihre Anwendung erheblich belastet wird, kann Memcache Wunder vollbringen. Denken Sie daran, während Sie Ihren Code schreiben ... vielleicht werden Sie eines Tages Objekte aus dem Memcache bekommen, anstatt sie spontan zu erstellen. Ein wenig Voraussicht macht die Implementierung schmerzlos.
-
Sobald Ihre App betriebsbereit ist, stellen Sie die Zeit für langsame Abfragen von MySQL auf eine kleine Zahl ein und überwachen Sie das Protokoll für langsame Abfragen sorgfältig. Dies zeigt Ihnen, woher Ihre problematischen Abfragen kommen, und ermöglicht es Ihnen, Ihre Abfragen und Indizes zu optimieren, bevor sie zu einem Problem werden.
-
Für ernsthafte Leistungsoptimierer sollten Sie PHP aus dem Quellcode kompilieren. Bei der Installation aus einem Paket werden viele Bibliotheken installiert, die Sie möglicherweise nie verwenden werden. Da PHP-Umgebungen in jede Instanz eines Apache-Threads geladen werden, werden sogar 5 MB Speicher-Overhead durch zusätzliche Bibliotheken schnell zu 250 MB verlorenem Speicher, wenn 50 Apache-Threads nicht vorhanden sind. Ich führe eine Liste meiner standardmäßigen ./configure-Zeilen, die ich beim Erstellen von PHP verwende hier , und ich finde, dass es für die meisten meiner Anwendungen geeignet ist. Der Nachteil ist, dass Sie, wenn Sie eine Bibliothek benötigen, PHP neu kompilieren müssen, um sie zu erhalten. Analysieren Sie Ihren Code und testen Sie ihn in einer Entwicklungsumgebung, um sicherzustellen, dass Sie alles haben, was Sie brauchen.
-
Minimieren Sie Ihr Javascript.
-
Seien Sie bereit, statische Inhalte wie Bilder und Videos auf einen nicht dynamischen Webserver zu verschieben. Schreiben Sie Ihren Code so, dass alle URLs für Bilder und Videos problemlos so konfiguriert werden können, dass sie in Zukunft auf einen anderen Server verweisen. Ein Webserver, der für statische Inhalte optimiert ist, kann ohne Weiteres zehn- oder sogar hundertmal schneller als ein Server für dynamische Inhalte bereitgestellt werden.
Das ist, was ich mir aus dem Kopf heraus denken kann. Wenn Sie nach Best Practices für PHP googeln, finden Sie auch viele Tipps, wie Sie schnelleren/besseren Code schreiben können (wie zum Beispiel:echo
ist schneller als print
).