Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.deVersion:Nie mehr weltweitesWartenPerforman...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHIhr Sprecher2Thomas AselTrainer, Bera...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDas war in der Schachtel …3Komponente...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFear, Uncertainty, DoubtJSF ist doch ...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHPerformance optimieren – Auf welcher ...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOnly 10%-20% of End-UserResponse-Time...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHWelt-Weites-Warten7Browser Servlet-Co...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOptimierungsmassnahmen - Anforderunge...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOptimierungsmassnahmen – Easy Winner•...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompon...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Komponentenbaum11UIViewRootHtml...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbH 12JSFLifecycleApplyRequestValuesVali...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Komponentenbaum• Wird im Lifecy...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDauer der Lifecylce-Phasen - Vergleic...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDauer der Lifecylce-Phasen – Anteilig...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHAnzahl Components / View• Beobachtet:...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHBrauchen wir dafür JSF – Komponenten?...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHLösung:Es müssen nicht immer Composit...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompon...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Implementierungen• 2 Implementi...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHVergleich: MyFaces vs Mojarra21010020...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHVergleich: MyFaces vs Mojarra22010020...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFazit Vergleichsstudie231. Größe des ...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompon...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Resource Handling• Organisation...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources26
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources: Anforderungen• Um...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources: Rendering28<link ...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Resource Handler• Verantwortlic...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces - CombinedResourceHandlerfa...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHview1.xhtmlscriptA.js(<1kB)jQuery.js(...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources: ProblemUngepackt:...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources : ProblemUngepackt...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources : ProblemLösung:Ca...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources – Ausnahmen35jQuer...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces - CombinedResourceHandlerAu...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CombinedResourceHandlerAus...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CombinedResourceHandlerAus...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources - Bibliotheken39IC...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompon...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHStandardverhalten:Caching- Response H...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHExpires Header"The Expires entity-hea...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHIdee:Expires: Fri, 01 Jan 2100 12:00:...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHResponse Header anpassen• Servlet-Fil...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompon...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHStatische Ressourcen auslagern46Apach...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN – Content Delivery Network47
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN - Vorteile• Transfer von statisch...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF und CDN• Deployment– Extra-Step• ...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF Resource Handler50
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CDNResourceHandler• faces-...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CDNResourceHandler52from C...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN und Caching• Response Header:Acce...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompon...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHKonfiguration - Tomcat• Server.xml<Co...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHZusammenfassung• JSF Response Time– K...
Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFazit• Einfluss auf JSF-Performance:–...
Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.de? ????Fragen ?
Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.deVielen Dank für ihreAufmerksamkeit !
Upcoming SlideShare
Loading in …5
×

Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen

3,103 views

Published on

Slides in German for my Talk at JAX 2013

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,103
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen

  1. 1. Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.deVersion:Nie mehr weltweitesWartenPerformancetuning für JSF-Anwendungen
  2. 2. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHIhr Sprecher2Thomas AselTrainer, Berater, EntwicklerSchwerpunkteFrontend-Architektur,Entwicklung von Web-Anwendungen,Web-Performance-Optimierunghttp://blog.oio.de@Tom_Aselthomas.asel@oio.de
  3. 3. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDas war in der Schachtel …3Komponenten-ModellArchitektur-ModellProgrammier-ModellResourceHandlingLifecycle… viele, viele,Bibliotheken
  4. 4. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFear, Uncertainty, DoubtJSF ist doch …4oldschoolschwerfälligschwieriglangsam
  5. 5. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHPerformance optimieren – Auf welcher Ebene?JVM-EbeneJSF-EbeneWeb-Ebene• Heap-Size• GarbageCollection• Lifecycle• Komponenten• Requests• Caching5
  6. 6. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOnly 10%-20% of End-UserResponse-Time is spentdonwloading the HTMLdocument.6Steve Souders- Web-Performance Guru, Yahoo
  7. 7. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHWelt-Weites-Warten7Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.pngJSF ResponseTimeResourceLoading"LATENZ"
  8. 8. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOptimierungsmassnahmen - Anforderungen• Postiver Effekt auf– JSF Response Time– Resource Loading– Netzwerk Latenzen• Geringe Auswirkungen auf– Anwendungs-Architektur– Programmiermodell– Deployment• Tooling:– Integration in bestehenden Toolstack– (JSF) – Bordmittel8
  9. 9. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOptimierungsmassnahmen – Easy Winner• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung9Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  10. 10. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung10Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  11. 11. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Komponentenbaum11UIViewRootHtmlFormHtmlOutputTextHtmlInputTextHtmlOutcomeTargetLink
  12. 12. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbH 12JSFLifecycleApplyRequestValuesValidationUpdateModelInvokeApplicationRenderResponseRestoreView
  13. 13. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Komponentenbaum• Wird im Lifecycle mehrfach traversiertBesonders aufwendig:• Phase1:– Erzeugung / Wiederherstellung• Client-Side State-Saving: Deserialisierung• Phase 6:– Rendering13
  14. 14. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDauer der Lifecylce-Phasen - Vergleichsmessung14C=10C=100C=250C=500C=1…0102030405060123456Duration[ms]PhaseQuelle: http://bit.ly/myfaces-vs-mojarra
  15. 15. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDauer der Lifecylce-Phasen – Anteilig15051015202530354045500 1 2 3 4 5 6 7%ofLifecycleDurationLifecycle PhaseRestoreViewApplyRequestValuesValidationUpdateModelInvokeApplicationRenderResponse
  16. 16. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHAnzahl Components / View• Beobachtet:– < 50 eher selten– Mittelwert ca. 250– Ausnahmefälle > 3000• Ursache:– Unnötiger Gebrauch von JSF-Komponenten• Falscher Gebrauch von Composite Components– "Dead Code": rendered="false"• Trotzdem Teil des Komponentenbaumes– Komplexität• z.B.: verschachtelte Tabbed Panes1654 Components!
  17. 17. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHBrauchen wir dafür JSF – Komponenten?17<ol id="ordered_list" class="ui-datalist-data"><li class="ui-datalist-item">Chrysler, 1965</li>...<ol>
  18. 18. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHLösung:Es müssen nicht immer Composites sein …• Custom-Tags<my:spacer height="100" />• Decorator<my:infoBox type="warning" ><h:message for="selection" /></my:infoBox>• Includes<ui:include src="footer.xhtml" />• Composite-Components<my:orderForm value="#{order}" showAll="true"><f:validateRequired for="address" /></my:orderForm>18
  19. 19. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung19Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  20. 20. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Implementierungen• 2 Implementierungen:– Oracle Mojarra (Referenzimplementierung)– Apache MyFaces Prinzipiell Austauschbar• Servlet-Container:– Implementierung typischerweise Teil der Anwendung Freie Wahl der Implementierung• Java EE - Application-Server: "Full-Stack-Falle"– Implementierung zwingend Teil des Auslieferumfangs– Dadurch Festlegung auf– Implementierung– Version– Änderung der JSF-Implementierung möglich• Konfiguration notwendig• Ggf. Auswirkung auf Garantie/Support20
  21. 21. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHVergleich: MyFaces vs Mojarra21010020030040050060070080090010000 200 400 600 800 1000 1200 1400[ms]# of Components in Tree
  22. 22. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHVergleich: MyFaces vs Mojarra22010020030040050060070080090010000 200 400 600 800 1000 1200 1400[ms]# of Components in Tree
  23. 23. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFazit Vergleichsstudie231. Größe des Komponentenbaum hat direkten Einfluss aufPerformance2. MyFaces durchläuft den Lifecycle schneller als Mojarra3. Anwendungen mit großen Komponentenbäumenprofitieren von einem Umstieg auf MyFaces bit.ly/myfaces-vs-mojarra
  24. 24. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung24Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  25. 25. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Resource Handling• Organisation inWebContent/resources:• Rendering:• Deklaration:<h:head><h:outputStylesheetlibrary="css"name="styleB.css" /><h:outputScriptlibrary="js"name="scriptC.js"target="head" /></h:head>25<link rel="stylesheet"href="/myapp/javax.faces.resource/styleB.css.jsf?ln=css"><script src="/myapp/javax.faces.resource/scriptC.js.jsf?ln=js"></script>
  26. 26. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources26
  27. 27. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources: Anforderungen• UmsetzungsvariantenBuild-Prozess/Deployment• Maven• Ant• Jawr– JSF• Eigenimplementierung / Erweiterung• Bibliothek• Programmiermodell:– Ressourcen zur Entwicklungszeit nicht kombinieren Staging-Konzept berücksichtigen• Rendering:– Nur ein Verweis pro Typ– Gerenderte Links müssen kombinierte Ressource referenzieren27
  28. 28. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources: Rendering28<link rel="stylesheet" href="/myapp/resources/packed.css"><script src="/myapp/resources/packed.js"></script><link rel="stylesheet"href="/myapp/javax.faces.resource/styleA.css.jsf?ln=css"><link rel="stylesheet"href="/myapp/javax.faces.resource/styleB.css.jsf?ln=css"><script src="/myapp/javax.faces.resource/scriptA.js.jsf?ln=js"></script><script src="/myapp/javax.faces.resource/scriptB.js.jsf?ln=js"></script><script src="/myapp/javax.faces.resource/jquery-1.9.1.min.js.jsf?ln=js"></script>
  29. 29. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Resource Handler• Verantwortlich fürDe/Encoding von Resourcen• Liefert Ressource anhandLibrary und Resourcename• Behandelt Resource Requests29
  30. 30. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces - CombinedResourceHandlerfaces-config.xml:<application><resource-handler>org.omnifaces.resourcehandler.CombinedResourceHandler</resource-handler></application>30
  31. 31. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHview1.xhtmlscriptA.js(<1kB)jQuery.js(~91 kB)scriptC.js(<1kB)Combined Resources: Problem31view2.xhtml
  32. 32. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources: ProblemUngepackt:• Requests– 9 of 12– 3 from Cache– 97,1 kB transferred32
  33. 33. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources : ProblemUngepackt:• Requests– 9 of12– 3 from Cache– 97,1 kB transferredGepackt:• Requests– 6 of 6– 0 from Cache– 186,9 kB transferred33
  34. 34. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources : ProblemLösung:Caching - Strategie34
  35. 35. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources – Ausnahmen35jQuery.jsa1.js a2.jsb1.js b2.jsview1.xhtml view2.xhtml[from Cache]
  36. 36. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces - CombinedResourceHandlerAusschluß seitenweise konfigurieren:view.xhtml:<!-- Packed Ressources --><h:outputScript library="js" name="scriptB.js"target="head" /><h:outputScript library="js" name="scriptC.js"target="head" /><!-- Excluded from packing --><h:outputScript library="js" name="jquery-1.9.1.min.js"/>36
  37. 37. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CombinedResourceHandlerAusschluß global konfigurieren:• web.xml:<context-param><param-name>org.omnifaces.COMBINED_RESOURCE_HANDLER_EXCLUDED_RESOURCES</param-name><param-value>javax.faces:jsf.js</param-value></context-param>37
  38. 38. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CombinedResourceHandlerAuslieferung vollständig unterdrücken:• web.xml:<context-param><param-name>org.omnifaces.COMBINED_RESOURCE_HANDLER_SUPPRESSED_RESOURCES</param-name><param-value>primefaces:primefaces.css</param-value></context-param>38
  39. 39. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources - Bibliotheken39ICEfaces 3.3"Resource Coalescing"RichFaces 4"Resource Optimization"Omnifaces"Combined ResourceHandler"
  40. 40. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung40Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  41. 41. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHStandardverhalten:Caching- Response Header• Production-Stage:HTTP/1.1 200 OKServer: Apache-Coyote/1.1Expires: Thu, 11 Apr 2013 13:51:12 GMTLast-Modified: Wed, 03 Apr 2013 08:52:01 GMTContent-Type: application/javascriptContent-Length: 176Date: Thu, 04 Apr 2013 13:51:12 GMT41
  42. 42. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHExpires Header"The Expires entity-header field gives the date/time after which theresponse 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 Update42
  43. 43. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHIdee: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 andlibraryName js not found in call to ResourceHandler.createResource. Itwill be silenty ignored.43
  44. 44. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHResponse Header anpassen• Servlet-Filter– geht immer, unabhängig von JSF– Nachteil: Kein Zugriff auf FacesContext, Scopes, etc…• JSF:44
  45. 45. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung45Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  46. 46. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHStatische Ressourcen auslagern46Apachehttpdhttp://www.oio.de http://static.oio.de
  47. 47. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN – Content Delivery Network47
  48. 48. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN - Vorteile• Transfer von statischen Ressourcen– schont• Application Server• Unternehmensnetzwerk– Erzeugt (vermutlich) geringere Kostenab 0,12 $ / GB undBeispiel $0,0090 / 10.000 Requests• CDN übernimmt– Auslieferung– Load-Balancing– Skalierung48
  49. 49. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF und CDN• Deployment– Extra-Step• Maven• Ant• …• JSF49<link rel="stylesheet"href="/myapp/javax.faces.resource/styleA.css.jsf?ln=css"><link rel="stylesheet" href="http://mycdn.com/oio/myapp/styleA.css">
  50. 50. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF Resource Handler50
  51. 51. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CDNResourceHandler• faces-config.xml:<application><resource-handler>org.omnifaces.resourcehandler.CDNResourceHandler</resource-handler></application>• web.xml:<context-param><param-name>org.omnifaces.CDN_RESOURCE_HANDLER_URLS</param-name><param-value>js:jquery.js=http://code.jquery.com/jquery.js</param-value></context-param>51
  52. 52. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CDNResourceHandler52from CDNPacked
  53. 53. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN und Caching• Response Header:Access-Control-Allow-Origin:*Content-Encoding:gzipContent-Length:32819Content-Type:application/x-javascript; charset=utf-8Date:Fri, 05 Apr 2013 14:02:24 GMTCache-Control:max-age=2592000Expires:Sun, 05 May 2013 14:02:24 GMTLast-Modified:Tue, 05 Feb 2013 00:56:40 GMTVary:Accept-EncodingX-Cache:HITServer:ECS (fcn/41B6)53
  54. 54. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHGliederung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung54Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  55. 55. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHKonfiguration - Tomcat• Server.xml<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"compression="on"compressionMinSize="1024"compressableMimeType="text/css,application/javascript"/>55
  56. 56. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHZusammenfassung• JSF Response Time– Kompontenbaum– Implementierungsunterschiede• Resource-Loading– Combined Resources– Caching– Ressourcen auslagern– Komprimierung56Browser Servlet-ContainerGET /index.jsfJSF-LifecycleRestoreViewRender ResponseGET stylesheet.cssGET script.jsGET logo.png
  57. 57. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFazit• 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 Bibliotheken57
  58. 58. Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.de? ????Fragen ?
  59. 59. Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.deVielen Dank für ihreAufmerksamkeit !

×