Donnerstag, 24. September 2009

Neue Jasmin-Servlet-Version

In einigen Projekten setzen wir bereits eine neue Version des Jasmin-Servlets ein. Zu den Neuerungen zählen:

Unterstützung von JavaScript am Ende der Seite

Aus Performance-Gründen empfiehlt es sich, JavaScript am Ende der Seite direkt vor dem schließenden body-Tag zu laden. Aus verschiedenen Gründen ist das an dieser Stelle aber recht schwierig zu realisieren. Vor allem stellen Inline-Scripte, welche von der Existenz extern geladener Ressourcen ausgehen, ein Problem dar. Um dieses Problem zu umgehen, wurde eine Möglichkeit entwickelt, diesen Inline-Code für eine spätere Ausführung zu registrieren.

2 Requests pro Ressource statt bisher einem

JavaScript und CSS werden mit 2 Requests statt bisher einem Request geladen. Dies stellt ein verbessertes Caching sicher. Mit dem ersten Request werden die Ressourcen geladen, die für alle Seiten benötigt werden (das sind für gewöhnlich die Basis-Projekt-Styles und Framework-Scripte). Dieser Request macht den größten Anteil an den Ressourcen aus und kann nach dem initialen Laden auf den Folgeseiten unverändert aus dem Cache bezogen werden. Mit dem zweiten Request werden seitenspezifische Ressourcen geladen. Diese können von Seite zu Seite variieren, haben aber in den meisten Fällen eine moderate Größe. Dieser variable Anteil führte bei der früheren Version mit nur einem Request dazu, dass kein Caching genutzt werden konnte, da sich der Request seitenspezifisch immer wieder veränderte. Die gewonnene Ladezeit durch das verbesserte Caching-Verhalten überwiegt dabei eindeutig die Performance-Einbußen, die durch den zusätzlichen Request entstehen.

Definition eines Prä- und Suffix

Dieses Feature ist besonders in Zusammenhang mit JavaScript sinnvoll. Dem ersten Request kann ein Präfix vorangestellt werden, welcher ganz grundsätzliche Angaben zu z. B. Namespaces oder Fehlerroutinen erlaubt. Genau so kann dem zweiten Request ein Suffix angehängt werden, welcher Code enthält, der nach dem kompletten Laden des JavaScripts ausgeführt werden soll. Dazu zählt die Ausführung der registrierten Inline-Scripte.

gZip-Komprimierung

Die CSS- und JavaScript-Ressourcen werden jetzt nicht mehr nur minimiert sondern bei einer Unterstützung durch den Browser auch mit gZip komprimiert. Dies reduziert die Größe der zu übertragenden Daten um bis zu 80%.

Expires-Header

Um ein verbessertes Caching-Verhalten zu erreichen, werden die ausgelieferten Ressourcen mit einem Expires-Header versehen. Der Zeitraum ist momentan auf 10 Minuten begrenzt, da eine Versionierung der Requests, welche ein zuverlässiges Neuladen bei einer Änderung der Ressourcen sicherstellt, aussteht.

Trackbacks

1&1 DSL - Performance-Optimierungen
Das DSL-Projekt ging letzte Woche mit dem neuen Jasmin-Servlet 2.1 online. An diesem Beispiel möchte ich zeigen, wie eine weitere Optimierung dieses Projekts aussehen könnte. Der erste Request In der nachfolgenden Grafik sind sämtliche Requests in F
Weblog: Nico Steiner - Frontend-Entwicklung und -Architektur
Aufgenommen: Okt 18, 13:38
Jasmin-Servlet mit Versionierung und Far Futur Expires Headern
Die Far Future Expires Header kommunizieren dem Browser wie hier beschrieben, dass sich die ausgelieferten Ressourcen für einen sehr langen Zeitraum nicht verändern werden. Dies verhindert, dass der Browser bei jedem neuen Anfordern der Ressource beim Ser
Weblog: Nico Steiner - Frontend-Entwicklung und -Architektur
Aufgenommen: Okt 23, 21:24
"The hard is what makes it great"
"It's supposed to be hard. If it wasn't hard, everyone would do it. The hard is what makes it great." Dieses Zitat stammt aus dem Film "A League of their Own" mit Tom Hanks. Gehört habe ich das Zitat vor einigen Wochen während der Präsentation "fast by
Weblog: Nico Steiner - Frontend-Entwicklung und -Architektur
Aufgenommen: Nov 24, 00:00
Neues von Google: Site Performance Feature
Seit einigen Tagen bietet Google in seinen Webmaster Tools ein neues experimentelles Feature zur Auswertung der Site Performance. In dem Artikel sind auch die weiterführenden Links beachtenswert. Neben einem Verlauf der durschnittlichen Ladezeiten der
Weblog: Nico Steiner - Frontend-Entwicklung und -Architektur
Aufgenommen: Dez 06, 23:39

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)
Noch keine Kommentare

Kommentar schreiben


Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss um dieses Verfahren anzuwenden.
CAPTCHA

 
 

Blog abonnieren

RSS 2.0 Feed

Suche

Kalender

Zurück Februar '12 Vorwärts
Mo Di Mi Do Fr Sa So
    1 2 3 4
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29        

Verwaltung des Blogs

Blogroll

Projects/Web

vCard

  • Nico Steiner
  • www.nicosteiner.de
  • Karlsruhe/Germany
  • Senior Frontend-Developer at 1&1