Schnelle PHP Websites und Anwendungen
12. Mai 2017
Veröffentlicht in:
WebentwicklungOptimierung von Web-Appliaktion und Web-Server
Speed sells! Geschwindigkeit und Performance ist eins der wichtigsten Kriterien, wenn es darum geht, mit einer Web-Applikation oder Website erfolgreich zu sein. Eine ganze Reihe neuer Technologien haben in den letzten Jahren dazu beigetragen, Webanwendungen immer schlanker und schneller programmieren zu können, ohne dass dabei die User Experience leiden muss. PHP (Backronym für PHP: Hypertext Preprocessor - ehemals Personal Home Page Tools ist ein solches Werkzeug. Die moderne Scriptsprache ist mittlerweile das am häufigsten verwendete Tool bei der Programmierung dynamischer Websites. Projekte wie Magento, WordPress oder TYPO3 wären ohne PHP nicht denkbar, ebenso Web Application Frameworks wie Laravel, Symfony oder CakePHP.
Trotzdem kann es auch bei PHP-gestützten Anwendungen durchaus zu Performanceschwierigkeiten kommen. In diesem Artikel wollen wir auf die häufigsten Ursachen für Performanceschwierigkeiten von PHP-Webseiten eingehen und schnell umsetzbare Lösung für deutliche Performanceverbesserungen geben. Hierzu ist es nötig, dass wir uns zwei entscheidende Stellen anschauen, an denen Probleme auftreten können: die Programmierung der Webseite selber und mögliche Fehlerquellen am Server.
1) Performance-Steigerung durch Webseiten-Optimierung
Für Optimierungen der Webseite selber sind keine grundlegenden Arbeiten am Server notwendig. Sie sind deshalb relativ leicht umzusetzen. Neben einfachen Verbesserungen ist auch die Fehlersuche in HTML-Dokumenten, CSS-Dateien und JavaScripts an dieser Stelle unerlässlich, auch wenn das einige Zeit in Anspruch nehmen könnte. Aber keine Sorge, auch hier gibt es hilfreiche Tools, welche die Sache vereinfachen.
1.1) SQL Requests optimieren
Der häufigste Grund für Performance-Einbußen sind fehlerhafte SQL-Request. Datenbankzugriffe, die zu lange benötigen, halten mitunter nachfolgende Prozesse auf, sodass sich Fehler an dieser Stelle schnell potenzieren. Es ist sinnvoll, alle Datenbankanfragen, die länger als zwei Sekunden benötigen, zu protokollieren und genau zu untersuchen. Oftmals stecken eine komplizierte Datenstruktur oder fehlerhafte Zuweisungen dahinter. Außerdem sollten Sie intensiven Gebrauch davon machen, häufig abgefragte Daten zwischen zu speichern (cachen). Daten, die einmal von einem User abgefragt wurden, verbleiben im Cache und stehen anderen Benutzern danach schneller zur Verfügung.
1.2) Bilddateien verkleinern
Bilddateien sind ein kritisches Element in Webseiten. Zum einen ist für ein seriöses Angebot eine gewisse Bildqualität unabdingbar, auf der anderen Seite soll die Seite schnell sein, was sich mit hochwertigen, und damit großen, Bilddateien nicht sonderlich gut verträgt. Für ein einzelnes Bild mag die Rechnung vielleicht noch aufgehen, aber spätestens bei einer Slideshow kommen schnell mehrere Megabyte an Bilddaten zusammen.
Zur Aufrechterhaltung einer hohen Geschwindigkeit ist es also nötig, möglichst kleine Bilddateien zu erzeugen. Die Verwendung des jpg-Formates bringt hier gegenüber dem ebenfalls oft im Web verwendeten png-Format deutliche Vorteile. Eine zusätzliche Kompression der jpg-Dateien um 10 bis 15 Prozent bringt eine weitere Dateneinsparung, ohne dass es wirklich zu sichtbaren Verlusten der Bildqualität kommt.
Mittlerweile gibt es aber auch noch bessere Alternativen. Insbesonde ist dabei WebP als alternatives Bildformat zu nennen. Das von Google entwickelte Bildformat ist in der Lage noch weitaus bessere Komprimierungsergebnisse zu erreichen, als es bei optimierten png's oder jpg's der Fall ist. Aktuell gibt es leider noch Schwierigkeiten bei der Browserunterstützung, es kann aber über Polyfills oder bspw. Polish von Cloudflare bereits jetzt auch im Produktivbetrieb verwendet werden.
1.3) Caching
PHP-Frameworks wie Laravel bieten die Möglichkeit, häufig verwendete Daten im Browser-Cache zu speichern. Hierdurch werden beim Seitenaufbau zuerst Daten aus dem Cache verwendet, und nur die zusätzlich benötigten Daten vom Server bezogen. Dies setzt die Serverlast herab und sorgt für einen schnelleren Seitenaufbau.
1.4) Codeoptimierungen
Auch der beste Code enthält Fehler. Davon wird sich wohl kaum ein Programmierer freimachen können. Deshalb ist es wichtig, bereits zu Projektbeginn mit einer intensiven Fehlersuche zu beginnen. Denn Fehler, die sich zu Beginn eines Projektes einschleichen, können später gravierende Folgen haben. Neben reinen Flüchtigkeitsfehlern, die relativ schnell behoben werden können, gilt es, systematische Fehler gleich von Anfang an auszuschließen.
1.4.1.) Javascript asynchron laden
Einer der häufigsten Fehler ist der Verzicht auf asynchrones Laden von JavaScript Elementen. Bei dieser Methode wird ein JavaScript-Element im Hintergrund geladen, während sich die eigentliche Seite im Vordergrund aufbaut. So ist das JavaScript direkt einsatzbereit, wenn die Seite vollständig geladen ist. Unterbleibt das asynchrone Laden, so baut sich erst die Seite auf, ist aber noch nicht voll funktionsfähig, weil die JavaScript Elemente noch geladen werden müssen.
1.4.2.) Fehler in HTML, CSS und JavaScript beheben
Der W3C-Validator ist eine großartige und kostenfreie Ressource des W3C-Konsortiums. Das Tool überprüft HTML, CSS, JavaScript und noch viel mehr für jede beliebige Seite und liefert anschließend eine ausführliche Fehleranalyse. Besser geht es nicht.
1.4.3) Seitenelemente reduzieren
Ein beliebtes Feature in Shop-Anwendungen sind vorgeschlagene Produkte. Oftmals werden Kunden mit zehn und mehr Produkten erschlagen, deren Relevanz sich aus dem bisherigen Suchverlauf ergibt. An dieser Stelle reichen in der Regel sechs Vorschläge, die dynamisch nachgeladen werden können, sobald ein Kunde sich gezielt dafür interessiert. Weniger ist hier mehr, vor allem im Hinblick auf die Performance.
2) Performance-Steigerung durch Serveroptimierung
Neben den Optimierungen an der Webseite selber können auch serverseitige Verbesserungen zu einer massiven Steigerung der Performance beitragen. Dabei muss es nicht immer gleich ein neuer Server sein. Davor gibt es noch einige andere sinnvolle Möglichkeiten, die Performance einer Web-Applikation zu verbessern.
2.1) NGINX Webserver
NGINX ist eine sehr leistungsstarke Alternative zum beliebten Apache Webserver. NGINX kann auch neben einem bestehenden Apache Webserver installiert werden. So können beide Serverinstanzen die Last unter sich aufteilen.
2.2) Percona Server statt MySQL
Percona Server ist eine Alternative zu einer bestehenden MySQL Datenbank. Im Gegensatz zu dieser punktet Percona Server mit einer verbesserten Performance und leichter Skalierbarkeit. Percona Server ist ebenfalls frei erhältlich und verfügt über eine Menge sehr leistungsstarker Analysewerkzeuge.
2.3) FastCGI
FastCGI ist eine Weiterentwicklung des bekannten CGI (Common Gateway Interface). Im Gegensatz dazu beschleunigt FastCGI die Ausführung von Scripten, da FastCGI nicht nach jeder Anwendung geschlossen wird, sondern von mehreren Scripten benutzt werden kann.
2.4) Installation von APC
APC (Alternative PHP Cache) trägt ebenfalls zur Beschleunigung von Scripten bei, indem häufig benutzte Scripte in einem Cache zwischengespeichert werden. Hierdurch wird vermieden, dass die Skripte vor einer weiteren Ausführung erneut kompiliert werden müssen.
2.5) Server Logs aufräumen
Server legen für jeden Zugriff und jede Veränderung ein Logfile an. Diese Files sind für Entwickler eine große Hilfe bei der Fehlersuche und dürfen auf keinen Fall gelöscht werden, selbst wenn die Files mit der Zeit sehr groß werden und mit der Zeit immer mehr Speicherplatz einnehmen. Um Speicherplatz freizugeben ist es sinnvoll, die Logfiles von Zeit zu Zeit an einen externen Speicher auszulagern und nur die jeweils letzten Dateien direkt auf dem Server zu belassen
2.6) Investition in bessere Hardware
Und ja, natürlich ist auch die Investition in bessere Hardware eine Option, die letzten Endes dabei helfen kann, die Performance einer Web-Applikation zu verbessern. Ein stärkerer Prozessor, mehr RAM , eine bessere Speicherorganisation - das sind alles Dinge, die die Performance einer Seite beeinflussen. Viele Webhoster bieten für eine entsprechend höhere Gebühr leistungsstärkere Hardware an. Hier lohnt es sich, die Angebote genau zu prüfen.
Fazit
In diesem Artikel haben wir Ihnen einige leicht umzusetzende Maßnahmen gezeigt, wie Sie die Performance einer PHP Webapplikation deutlich verbessern. Durch einige gezielte Optimierungen der Webseite selber reduzieren Sie die Menge der Daten, die vom Server angefordert werden. Dies und die Verbesserung eventuelle Fehler im Code der Webseite führen zu drastisch verringerten Zugriffszeiten.
Der Austausch einiger kritischer serverseitiger Software-Kompontenten trägt ebenfalls zur Leistungssteigerung einer Web-Applikation bei. Als letzte Maßnahme bleiben noch Verbesserungen der Hardware, wenn es sein muss auch durch einen kompletten Serverumzug.
Alles ist besser als eine langsame Web-Applikation. Denn langsame Seiten werden in Suchmaschinen schlechter gelistet, was zu einem spürbaren Rückgang an Nutzerzahlen führt. Also, worauf warten Sie noch? Sie wissen, wie es geht!
Sie haben weitere Fragen zu schnellen PHP Websites und Online-Anwendungen? Sprechen Sie uns an! mindtwo in Bonn berät Sie gerne.
Können wir weiterhelfen?
Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!