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: , ,

International PHP Conference: Agile, JavaScript und Responsive Design

Über 60 Vorträge rund um PHP und themenspezifische Special Days

Frankfurt am Main, 28. März 2013 – Die Teilnehmer erwarten bei der International PHP Conference 2013 insgesamt über 60 Vorträge und mehr als 50 Referenten rund um PHP. Mit ausgewählten Sessions warten die drei themenspezifischen Special Days zu Agile, JavaScript und Responsive Design auf. Im Rahmen der Special Days agieren Experten als Moderatoren in einzelnen Themenblöcken, in denen sich die Teilnehmer entsprechend ihrem Interessengebiet fundiert zu bestimmten Themenbereichen informieren. Weiterlesen >


Performance-Probleme beim Rendering von Hintergrundbildern im IE

Die schnellste Übertragung von HTML, Bildern & Co. nützt nichts, wenn der Browser beim Rendern dieser Elemente ins Schwitzen kommt. Im Internet Explorer scheint es diesbezüglich ein besonders großes Problem im Zusammenhang mit großen Hintergrundbildern zu geben, wodurch der Browser unter gewissen Umständen mehrere Sekunden lang blockiert und die Seite dadurch unbenutzbar bzw. unscrollbar wird.
Weiterlesen >

Gewinnspiel: 3 Abos vom PHP Magazin zu gewinnen

Die PHP-Welt dreht sich weiterhin fleißig und jeder Entwickler muss möglichst immer über aktuelle Entwicklungen, Frameworks und Konzepte informiert sein. Damit auch Du Dich demnächst entspannt nickend zurücklehnen kannst, wenn der Chef fragt: "Haben Sie schon mal von Framework XYZ gehört?", verlosen wir 3 Jahres-Abos des PHP Magazins. Weiterlesen >

Server Side Cookies

Heute möchte ich mir mal Cookies vornehmen. Relativ viele Webseiten benutzen diese Datenschnipsel, um alle möglichen Daten über den User zu speichern. Das Problem von Cookies ist, dass alle Cookies, die zu der Domain der aktuell geladenen Seite passen, bei jeder Ressource erstmal vom Client im HTTP-Request geladen werden müssen. So kommt recht schnell eine ordentliche Datenmenge zusammen. In diesem Beitrag möchte ich eine Idee vorstellen, wie man diese Cookiegröße konstant und auch noch konstant klein halten kann. Weiterlesen >

Twitter: Ich bin dabei

Wie ihr ja sicherlich gemerkt habt, ist es hier im Blog recht ruhig geworden. Das liegt daran, dass ich jede Menge andere Sachen zu tun hatte und habe und dadurch es selten schaffe, Beiträge zu recherchieren und zu schreiben – insbesondere weil (fast) alle meine Beiträge nicht nur kurze 4-Zeiler sind, sondern doch eher mehrseitiges Format haben, damit ich die Dinge auch erklären kann. Aber das verschlingt natürlich viel Zeit – und die habe ich leider derzeit nicht. Aber es gibt Hoffnung: Twitter.
Außerdem möchte ich gern eure Meinung zu einer Themenerweiterung zu Code-Qualität in PHP-Projekten hören.
Weiterlesen >