in Objects GmbH Ihr Sprecher 2 Thomas Asel Trainer, Berater, Entwickler Schwerpunkte Frontend-Architektur, Entwicklung von Web-Anwendungen, Web-Performance-Optimierung http://blog.oio.de @Tom_Asel [email protected]
in Objects GmbH Das war in der Schachtel … 3 Komponenten- Modell Architektur- Modell Programmier- Modell Resource Handling Lifecycle … viele, viele, Bibliotheken
in Objects GmbH Welt-Weites-Warten 7 Browser Servlet-Container GET /index.jsf JSF-Lifecycle RestoreView Render Response GET stylesheet.css GET script.js GET logo.png JSF Response Time Resource Loading "LATENZ"
in Objects GmbH Fazit Vergleichsstudie 23 1. Größe des Komponentenbaum hat direkten Einfluss auf Performance 2. MyFaces durchläuft den Lifecycle schneller als Mojarra 3. Anwendungen mit großen Komponentenbäumen profitieren von einem Umstieg auf MyFaces bit.ly/myfaces-vs-mojarra
in Objects GmbH Expires Header "The Expires entity-header field gives the date/time after which the response is considered stale." RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 • Wird von JSF automatisch gesetzt – Production-Stage: 7 Tage – Development-Stage: 0 • Probleme: – Zu kurzer Zeitraum: • Ressource wird redundant ausgeliefert – Zu langer Zeitraum • Client verpasst Update 42
in Objects GmbH Idee: Expires: Fri, 01 Jan 2100 12:00:00 GMT • JSF Resourcehandling unterstützt Versionierung • Version mit jedem Deployment erhöhen • JSF verwendet standardmässig höchste Version • Angabe von niedriger Version möglich, aber… <h:outputScript library="js" name="1_0/scriptA.js" target="head" /> – Mojarra: erlaubt – MyFaces: Warnung: Resource referenced by resourceName 1_0/scriptA.js and libraryName js not found in call to ResourceHandler.createResource. It will be silenty ignored. 43
in Objects GmbH Response Header anpassen • Servlet-Filter – geht immer, unabhängig von JSF – Nachteil: Kein Zugriff auf FacesContext, Scopes, etc… • JSF: 44
in Objects GmbH Fazit • Einfluss auf JSF-Performance: – Größe des Komponentenbaumes – Wahl der Implementierung • # Requests statischer Resourcen verringern: – Combined Resources – Resource Caching – Auslagern (CDN / dedicated Webserver) • Netzwerk-Latenz verringern: – GZip Kompression nutzen • Der Browser kann das schon lange … Alle vorgestellten Massnahmen lassen sich mit JSF umsetzen • Es existieren außerdem hilfreiche Bibliotheken 57