Tipps für Performance Tweaks

Fragen, Feedback, Kritik, Technische Probleme, Verbesserungsvorschläge und Lobgesänge
eragon
Greenhorn
Greenhorn
Beiträge: 56
Registriert: 25 Apr 2011, 21:03

Tipps für Performance Tweaks

Beitragvon eragon » 27 Apr 2011, 01:17

Hi,

Da ich mich jetzt schon seit ca. 5 Jahren mit Webentwicklung, und seit 3 Jahren mit Linux (auf Desktop und Server) beschäftige und das Forum hier toll finde wollte ich mal ein paar meiner Erfahrungen bekanntmachen:

- NGINX: ist ein High Performance Webserver und nicht so übergewichtig wie Apache. Auserdem bei einer so großen Seite wie diese hier schneller als ein Apache. Besonders wenn Apache aus den Paketquellen kommt und mit jedem mist kompiliert wurde.

- PHP-FPM: nutzt die vorteile von FastCGI. Soll heisen die PHP Prozesse laufen mehr daemon like und werden nicht bei jedem Request gestartet

- APC: ist ein Obcode Cache. PHP erzeugt bei jedem Request einen Zwischencode. Da sich dieser aber nur ändert wenn sich die Dateien ändern lässt er sich cachen. Genau das macht APC (oder ein anderer Obcode Cache). Bringt bestimmt 100% Performance

- Assets zusammenfassen. JavaScript und CSS lassen sich zu wenigen Files zusammenfassen. Wenn man in Zeiten von DSL die Zeit zusammenrechnet die für den Verbindungsaufbau gebraucht wird und die für die eigentliche Übertragung stellt man fest das teilweise mehr Zeit mit dem Verbindungsaufbau verbraucht wird als mit dem Download.. Außerdem laden Browser nur ca. 2 Files von einer Domain gleichzeitig runter.. Das kann den Seitenaufbau extrem ausbremsen..

Wenn im optimalem Fall nur ein CSS und JavaScript File da ist spart man viel Overhead. besonders wenn das File man gecacht ist.. dann hat man 100% der Zeit die gebraucht wird für Verbindungsaufbau. Das läppert sich.

Auch kann man Bilder zusammenfassen.. Also ein großes Bild mit den vielen kleineren Bildern und dann mit background-position an die richtige stelle schieben. Aber da das Forum hier sowieso nicht so Bildlastig ist lohnt das warscheinlich nicht.

Auch kann man kleine Hintergrundbilder Bilder im CSS mit data URls einbinden. Noch mehr Requests gespart..

Ganz wichtig ist auch die CSS und Javascript Files dann zu minifizieren und gegunzipt auszuliefern. Wenn man ganz krass drauf ist legt man auch gleich gegunzipte Versionen des Files mit auf den Webserver. NGINX kann man so konfigurieren das wenn ich z.b. foobaa.css requeste und eine foobaa.css.gz auf dem Server liegt er diese Version ausliefert. So spart man traffic und last am Server da das kompirimieren statischer Files bei jedem Request wegfällt.

Auch sollte man diese Files auf eine extra Subdomain (z.b. static.forum.boypoint.de) auslagern da für das ausliefern der Statischen Files kein riesiger HTTP Header mit Cookies usw. benötigt wird.
Das spart Traffic..

Große Frameworks wie z.b. Jquery sollte man von einem CDN (Content Distribution Network) wie z.b. googleapis.com beziehen. Die haben einfach die nötige Power! Außerdem werden die so häufig genutzt das die meisten User die Libs von da noch im Cache haben. Auch spart das wieder Traffic!

Da kommen wir zum nächsten Punkt Caching: Immer HTTP Cache aktivieren. Ist bei NGINX eigentlich auch standardmäßig aktiviert..
Villeicht ist auch Memcache ne idee für die Assets. Aber der Linux Kernel sollte die eigentlich in den RAM werfen. Ungenutzer RAM ist verschenkter RAM!

Das nächste ist das man JavaScript immer ans Ende des HTML's setzen sollte weil der Browser solange er auf das Javascript wartet (insbesondere herunterläd) die Seite nicht weiter rendert. Warum ist das so? Weil der Browser auf sozusagen den Super GAU wartet. Ein document.write das an der stelle des Script Tags HTML platzieren könnte. Das würde natürlich das rendering verändern.

Apropo Rendern.. Es ist auch ganz gut sich mal über gute und schlechte CSS Selektoren zu informieren. Die Browser verarbeiten die Selektoren nicht wie man vermutet von links nach rechts sondern gehen sozusagen den arabischen weg von rechts nach links.
Wenn man z.b. so einen Selektor hat: #baubau > #tuftuf ist das total ineffizient. Die ID ist eindeutig und der Browser hat das DOM Element bei dem Suchen nach #tuftuf schon gefunden aber wir zwingen ihn noch im parent nach #baubau zu suchen...
Natürlich heist das nicht das man kein > benutzen soll/darf.. Man sollte es nur nicht übertreiben. Also maximal 2 Childs in Selektoren angeben ist eine gute Faustregel.. Geht das nicht heist das ne paar mehr Klassen reinballern.
Im Layout sollte man sowieso nur ID's benutzen. Die werden vom Browser auch anders im DOM indiziert und schneller gefunden.


Man muss ja nicht alles umsetzten. Ich kenne das mit der Zeit.. Aber die ersten paar Sachen sind einfach umzusetzten und bringen das meiste. Besonders das mit NGINX, PHP-FPM und APC.
Auch die Assets zusammenzufassen und JS ans ende zuballern ist relativ easy zu machen und bringt viel.

ich hoffe ich hab ne paar Ideen geben können und hoffe das das Forum dadurch flotter wird

Tipps für Performance Tweaks

Werbung
 

Benutzeravatar
blowfish
boypoint-Moderation
Beiträge: 7930
Registriert: 06 Sep 2004, 23:26
Wohnort: Köln

Re: Tipps für Performance Tweaks

Beitragvon blowfish » 27 Apr 2011, 01:32

Boypoint lebt vom mitmachen^^ Vielleicht hast du ja Lust dich einzubringen?
Bin ich schwul? 83% der Menschen, die diese Frage stellen, sind schwul. Hast du dich vorher extra in einem schwulen Forum angemeldet, beträgt die Wahrscheinlichkeit sogar 97%.

eragon
Greenhorn
Greenhorn
Beiträge: 56
Registriert: 25 Apr 2011, 21:03

Re: Tipps für Performance Tweaks

Beitragvon eragon » 27 Apr 2011, 03:54

Leider schon x andere Projekte am laufen.. leider keine Zeit mich um nochwas zu kümmern. Deswegen hab ich die Sachen hier auch reingeschrieben.. Damit der Webmaster fals er Zeit findet mal das ein oder andere in Angriff nehmen kann.

Wenn es aber um Fragen zur Konfiguration von NGINX oder PHP-FPM geht kann ich gerne zur Seite stehen

Benutzeravatar
timtom
boypoint-Technik
Beiträge: 14080
Registriert: 13 Mär 2001, 00:00
Wohnort: Münster, Germany

Re: Tipps für Performance Tweaks

Beitragvon timtom » 27 Apr 2011, 10:28

Hi eragon :)
Danke fuer dein umfangreiches Posting.
Ich habe die Performance auch bereits seit einer Weile auf dem Radar. Zwar bin ich nicht unzufrieden (ich find die Seite ist schon ziemlich flott - oder? ) aber es gibt in der tat ein umfangreiche Agenda was zu tun waere.
Die "einfachen" Sachen haben wir auch bereits umgesetzt *g* (APC, FPM, memcache, sonst wuerde der Server bei dem Forum schon sterben)
CSS sprites waeren das naechste auf dem Plan, aber das phpbb ist da verdammt zickelig und Anpassungen machen da recht viel Arbeit.

Wie blowfish schon meinte: Wir freuen uns ueber jeden, der mithelfen mag. (Wir sind einfach zeitlich nicht dazu in der Lage) Vielleicht hast Du ja zwischen Deinen Projekten doch mal Lust? :)
The greatest enemy of freedom is a happy slave.

Benutzeravatar
timtom
boypoint-Technik
Beiträge: 14080
Registriert: 13 Mär 2001, 00:00
Wohnort: Münster, Germany

Re: Tipps für Performance Tweaks

Beitragvon timtom » 27 Apr 2011, 19:01

Gilt natuerlich auch fuer alle anderen, die Interesse haben :)
The greatest enemy of freedom is a happy slave.

eragon
Greenhorn
Greenhorn
Beiträge: 56
Registriert: 25 Apr 2011, 21:03

Re: Tipps für Performance Tweaks

Beitragvon eragon » 27 Apr 2011, 21:26

Hmm also ich kann mal listen was mir auffällt was nicht gemacht ist aber viel bringen würde:

NGINX als Webserver. (Ihr nutzt ja noch Apache)
CSS Sprites würde ich naja nicht umbedingt machen. zu viel aufwand.. Eher die kleineren Bilder (wo man mehr zeit für den Verbindungsaufbau braucht als der eigentliche Download) ins CSS als Data URL einbinden: (http://de.wikipedia.org/wiki/Data-URL)
Assets zusammenfassen (Aktuell habt ihr noch relaitv viel Inline Javascript)
Javascript ans Ende packen.. Begründung oben

Also ich würde wirklich empfehlen bevor man mit CSS Sprites rummacht NGINX zu nutzen. Und lieber die kleinen Bilder per Data URL's einbinden

Re: Tipps für Performance Tweaks

Werbung
 

 


  • Ähnliche Themen
    Antworten
    Zugriffe
    Letzter Beitrag

Zurück zu „Feedback“



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast