IPC 2013 Spring Edition

WordPress mit dem PHP ByteCode-Cache beschleunigen

WordPress zählt bereits zu den beliebtesten PHP-Frameworks. Doch genau wie alle anderen PHP-Frameworks bringt auch WordPress einige Nachteile mit sich:
Bedingt durch Ihre Architektur müssen Frameworks massenhaft PHP-Code zur Laufzeit laden, um dynamisch alle Inhalte darzustellen. Die Performanceeinbußen hierbei sind teilweise eklatant. Der ByteCode-Cache könnte Abhilfe schaffen:

Was ist der ByteCode-Cache‌
Wie alle Skriptsprachen wird auch der PHP-Code der Webseiten zur Laufzeit interpretiert. Er liegt also nicht wie fertige Programme als maschinennaher Code vor. Damit ergeben sich bereits zwei Nachteile:
Der PHP-Code muss zunächst von der, vergleichsweise langsamen, Festplatte geladen werden, dann erst in Maschinencode umgewandelt und ausgeführt werden, bevor ein Ergebnis an den Benutzer zurückgeliefert werden kann.
Dieser Vorgang wiederholt sich dann jedes Mal wenn das entsprechende Skript geladen werden soll. Auch wenn dieses bereits kurz vorher vom gleichen System angefordert wurde.
Genau an diesem Punkt setzt der ByteCode-Cache ein: Er speichert die einmal geladenen und interpretierten (maschinennahen) PHP-Skripte im Arbeitsspeicher. Dadurch können diese beliebig oft wieder geladen und ausgeführt werden, ohne dass diese erneut interpretiert werden müssen.

Was bewirkt er?

Durch diese Technik können Webseiten mit hohem Anteil an PHP-Skripten, hierunter fallen kategorisch alle Webseiten die PHP-Frameworks einsetzen, einen 2-5 fachen Performance-Zuwachs erreichen. Wichtig ist, dass im Vergleich zu anderen Caches, nicht das Ergebnis, sondern das Skript an sich im Cache vorliegt und somit weiterhin dynamisch die gewünschten Inhalte liefert.

Wie funktioniert der ByteCode-Cache?

Abhängig von Anzahl der Aufrufe, der zu berechnenden Daten und dem Zeitstempel der letzten Änderung, werden die Skripte als Bytecode im Cache abgelegt und abrufbar gehalten.
Wird also ein Skript verändert, wird dieses beim nächsten Aufruf erneut interpretiert und dann wieder im Cache abgelegt. Durch den ByteCode-Cache entstehen also keine Webseiten mit veralteten Inhalten.

Wo wird er verwendet?

Der ByteCode-Cache kann derzeit als PHP Extension auf dem Webserver nachinstalliert werden. Es werden bereits von mehreren Anbietern Lösungen hierzu angeboten. Diese bieten jeweils einen lauffähigen Cache und unterscheiden sich überwiegend in ihrer Kompatibilität. Viele Webhoster bieten allerdings bereits jetzt vorinstallierte Caches für ihre Systeme an. Im Zweifel oder bei auftretenden Problemen mit der Seitendarstellung sollte Rücksprache mit dem Support des Webhosters gehalten werden.

Fazit

Insbesondere umfangreiche Webseiten können durch den Einsatz von ByteCode-Caches ihre Performance wesentlich steigern. Nichtsdestotrotz sollten Administratoren wie auch Entwickler das Caching nicht als Allheilmittel verstehen. Skripte die nur dann performant arbeiten, wenn sie im Cache liegen, sollten nochmals überdacht werden. Genauso sollten weitere Möglichkeiten, wie das Zwischenspeichern oft wiederkehrender Inhalte, z.B. In der Session, nicht vergessen werden.
Als zusätzlichen Gewinn einer laufenden Webseite sollten Administratoren aber dem ByteCode-Cache einen Probelauf spendieren.

Schlagwörter: , ,

HTTP 304 Not Modified – Performancesteigerung kann so einfach sein

Dass die Kommunikation im Internet auf HTTP aufbaut, wissen die meisten Webseiten-Entwickler noch. Für viele ist das Protokoll allerdings eine große Unbekannte, die sehr komplex ist, und die zwar über allem schwebt, was man täglich programmiert, um die man sich aber annähernd nie kümmert kümmern braucht. Und doch lohnt ein Blick in das Protokoll, denn nur wer es kennt, kann alle Möglichkeiten, die HTTP bietet, auch ausnutzen. Weiterlesen >

Schlagwörter: , , ,

Programmierer gesucht

Heute gibt es mal keine Tipps zur Verbesserung der Performance eurer Webanwendungen. Stattdessen wird jemand gesucht, der möglichst viele davon verinnerlicht hat und fit ist in PHP, MySQL usw. Ein befreundetes Entwicklerteam sucht nämlich für ein größeres Projekt noch jemanden, der bei der Entwicklung mithelfen kann. Weiterlesen >

Schlagwörter: , ,

echo mit " oder ' – was ist schneller?

Dieser Artikel ist (nicht) nur für Ulf, der in seinem letzten Kommentar meinte:

echo oder print, " oder ' machen nun wirklich keinen bemerkenswerten Performanceunterschied aus

Ob das stimmt habe ich dann mal genauer untersucht. Weiterlesen >

Schlagwörter: , , , , ,

Google hilft uns, das Web schneller zu machen

Jeder weiß, dass Google ein Primus in Sachen Web Performance ist. Allein die Google Suche ist schon beeindruckend, wenn man weiß, wie komplex eine Suchfunktion an sich und wie riesig die zugrundeliegende Datenmenge ist. Doch die Entwickler bei Google behalten Ihre Erkenntnisse nicht für sich, sondern haben nun eine sehr informative Artikelreihe zum Thema Let's make the web faster geschrieben. Weiterlesen >

Schlagwörter: , , , , ,

IP-Adressen optimal speichern

In (fast) allen Webprojekten müssen IP-Adressen gespeichert werden. Wenn nur einige wenige Einträge in der Datenbank vorhanden sind, ist das sicher kein Problem. Interessant wird es, wenn mehrere 1000 Einträge durchsucht werden müssen, um festzustellen, ob eine IP vorhanden ist, oder nicht. Wie man das ganze effektive steuert wird im folgenden erläutert. Weiterlesen >

Schlagwörter: , , , ,