Your SlideShare is downloading. ×
0
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Nie mehr weltweites Warten - Performance-Tuning für JSF-Anwendungen
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,886

Published on

Slides in German for my Talk at JAX 2013

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
1,886
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.deVersion:Nie mehr weltweitesWartenPerformancetuning für JSF-Anwendungen
  • 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHDas war in der Schachtel …3Komponenten-ModellArchitektur-ModellProgrammier-ModellResourceHandlingLifecycle… viele, viele,Bibliotheken
  • 4. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHFear, Uncertainty, DoubtJSF ist doch …4oldschoolschwerfälligschwieriglangsam
  • 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. 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. 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. 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. 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. 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF - Komponentenbaum11UIViewRootHtmlFormHtmlOutputTextHtmlInputTextHtmlOutcomeTargetLink
  • 12. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbH 12JSFLifecycleApplyRequestValuesValidationUpdateModelInvokeApplicationRenderResponseRestoreView
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources26
  • 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. 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. 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. 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. 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. 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. 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCombined Resources : ProblemLösung:Caching - Strategie34
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHStatische Ressourcen auslagern46Apachehttpdhttp://www.oio.de http://static.oio.de
  • 47. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHCDN – Content Delivery Network47
  • 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. 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHJSF Resource Handler50
  • 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. Nie mehr weltweites warten – JSF Performance-Tuning© 2013 Orientation in Objects GmbHOmniFaces: CDNResourceHandler52from CDNPacked
  • 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. 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. 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. 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. 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. Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.de? ????Fragen ?
  • 59. Orientation in Objects GmbHWeinheimer Str. 6868309 Mannheimwww.oio.deinfo@oio.deVielen Dank für ihreAufmerksamkeit !

×