front end performance optimierung

47
Front End Performance Mehr Geschwindigkeit für Webseiten

Upload: nikolas-schmidt-voigt

Post on 05-Dec-2014

1.044 views

Category:

Technology


3 download

DESCRIPTION

Folien zu einem Vortrag, der auf dem Summercamp Alfeld 2012 gehalten wurde. Mehr Informationen unter: http://www.kawumba.de/front-end-performance-summercamp-alfeld-2012/

TRANSCRIPT

Page 1: Front End Performance Optimierung

Front End PerformanceMehr Geschwindigkeit für Webseiten

Page 2: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Überblick

Worum geht es?

Messen HTTP HTML & CSS Tools

12.07.2012 | Folie 2

Page 3: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Relevanz

Warum ist Front End Performance wichtig?

12.07.2012 | Folie 3

Page 4: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Relevanz

Auswirkung auf Website Nutzung

12.07.2012 | Folie 4

+0,4 Sekunden

Suchanfragen: - 1 %

+ 2 Sekunden

Umsatz: - 4,3 %

+ 0,1 Sekunden

Verkäufe: - 1 %

Quellen: http://www.slideshare.net/guestbf04d7/fronteers-20091105-1http://www.websiteoptimization.com/speed/tweak/psychology-web-performance/

Page 5: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Relevanz

12.07.2012 | Folie 5

Seit 2010 behandelt Google die Ladezeit einer Website als Rankingfaktor

Page 6: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Was ist die Ladezeit einer Website?

12.07.2012 | Folie 6

Page 7: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Time to first Byte

12.07.2012 | Folie 7

Page 8: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Time to first Byte

Zeit vom Beginn unserer Abfrage, bis der Browser das erste Byte der Antwort empfängt

Kann für jeden einzelnen Request berechnet werden, uns interessiert aber vor allem die initiale Anfrage der Seite

Bei Redirects interessiert uns die Zeit vom Absenden unserer Anfrage bis zum ersten Byte der endgültigen Antwort

dns Lookup + Socket Connect + Warten

Wird hauptsächlich durch die Back End Performance bestimmt

12.07.2012 | Folie 8

Page 9: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Start Render / DOMContentLoaded

12.07.2012 | Folie 9

Page 10: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Start Render / DOMContentLoaded

Zeitpunkt, zu dem der Browser mit dem Rendering der Webseite beginnt

Üblicherweise, sobald das CSS vollständig geladen ist

Wird durch Unterschiede bei den Browsern beeinflusst

12.07.2012 | Folie 10

Page 11: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Document Complete

12.07.2012 | Folie 11

Page 12: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Messen

Document Complete

Das Dokument wurde vollständig im Browser aufgebaut und alle Komponenten sind vorhanden

Die JavaScript Engine sendet das „onLoad“-Event

12.07.2012 | Folie 12

Page 13: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

12.07.2012 | Folie 13

HTTP – Anzahl und Aussehen der Requests

Page 14: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Zahl der Requests vermindern

Jeder Request erzeugt neuen Overhead durch das Senden der Anfrage, den „Verbindungsaufbau“ und das Empfangen

Icons als CSS-Sprites zusammenfassen− Div. Online-Tools, z.B.:

http://spritegen.website-performance.org/

Mehrere CSS- und JavaScript-Dateien jeweils zu einer Datei zusammenfassen

12.07.2012 | Folie 14

Page 15: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Komprimierung

Vor der Übertragung sollte der Server die Daten komprimieren.

CSS und JavaScript sollte noch auf Textbasis optimiert werden, Tools:

− Minify (allg.)

− Scriptmerger (TYPO3)

Alle Daten (außer jpg/png-Grafiken) sollten zusätzlich per Gzip komprimiert werden

PayOff: Serverseitig minimal größere Rechenzeit

12.07.2012 | Folie 15

Page 16: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Cookies

Beispiel: 415 Zeichen im Cookie

12.07.2012 | Folie 16

Page 17: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Cookies

~70 Requests an denselben Host

12.07.2012 | Folie 17

Page 18: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Cookies

= 70 x 415 Bytes = ~ 29 kB unnötiger Upload Traffic bei jedem Seitenaufruf

Deshalb: Cookiegröße minimieren am besten nur eine Session-ID ausliefern und alles andere

serverseitig abhandeln

Statische Dateien von eine Cookie freien (Sub-)Domain ausliefern− Payoff: Mehr dns-Abfragen

12.07.2012 | Folie 18

Page 19: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Cookie freie (Sub-)Domain mit TYPO3

1. Neuen ServerAlias eingerichtet

12.07.2012 | Folie 19

Page 20: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Cookie freie (Sub-)Domain mit TYPO3

2. Per tx_ja_replacer in TYPO3 Links auf statische Dateien ausgetauscht

12.07.2012 | Folie 20

Page 21: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Cookie freie (Sub-)Domain mit TYPO3

Keine Cookies mehr bei statischen Dateien:

12.07.2012 | Folie 21

Page 22: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Ein CDN benutzen

Über ein Content Delivery Network wird die Last bei der Abfrage von statischen Dateien auf mehrere Server verteilt.

Nutzer erhalten die Daten von den jeweils geographisch nächsten und bestverfügbaren Knoten

Pay-Off: dns-Lookups erzeugen zusätzlichen Overhead

12.07.2012 | Folie 22

Page 23: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Clientseitiges Caching ermöglichen

Spezielle HTTP-Header steuern, wie der Browser (und Proxy-Server) die Server-Antworten speichert

Zahl der Anfragen wird verringert

Eine Anfrage, die nicht neu beantwortet werden muss, ist die am schnellsten verarbeitete Anfrage

12.07.2012 | Folie 23

Page 24: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Zwei Arten von Caching

Starkes Caching: − Der Browser versucht gar nicht erst, eine im Cache vorhandene Datei neu anzufordern

− Ideal für statische Dateien

Schwaches Caching:− Der Browser erwartet nur dann eine vollständige Antwort, wenn es eine neue Version der Datei gibt

− Kann auch für dynamische Dateien genutzt werden

12.07.2012 | Folie 24

Page 25: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Starkes Caching

12.07.2012 | Folie 25

GET

200 OKExpires: Fri, 13 Jul 2012 11:21:23 GMT

Page 26: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Starkes Caching - Expires-Header

Header:

Expires: Tue, 26 Mar 2013 10:00:00 GMT

Serverkonfiguration:

<filesMatch "\.(jpg|png|gif|css|js)$">ExpiresDefault "acces plus 1 years"

</filesMatch>

Der Server ruft erst nach dem angegebenen Datum eine neue Version ab

12.07.2012 | Folie 26

Page 27: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Starkes Caching - Cache-Control-Header

Header:

Cache-Control: max-age=31536000, public

Serverkonfiguration:

<filesMatch "\.(jpg|png|gif|css|js)$">Header set Cache-Control "max-age=31536000, public"

</filesMatch>

Angabe public bedeutet, dass auch Proxys die Datei speichern können

Entweder Expires oder Cache-Control nutzen, nicht beides zusammen

12.07.2012 | Folie 27

Page 28: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Schwaches Caching

12.07.2012 | Folie 28

GET

200 OKE-Tag: 123

GETE-Tag: 123

304 Not Modified

Page 29: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Schwaches Caching - ETag

Header:

ETag: „12bh-8f7g-1dsd"

Serverkonfiguration:

FileETag MTime Size

Achtung: Ohne diese Konfiguration nutzt Apache die aktuelle inode-Nummer zur Berechnung des ETags. Dadurch erhalten Dateien unterschiedliche ETags, je nachdem, welcher Knoten die Anfrage beantwortet.

12.07.2012 | Folie 29

Page 30: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Schwaches Caching – Last-Modified

Header:

Last-Modified: Mon, 21 Feb 2011 10:00:00 GMT

Serverkonfiguration: Nur notwendig, wenn der Header explizit gesetzt werden soll

<filesMatch "\.(jpg|png|gif|css|js)$">Header set Last-Modified "Mon, 01 Jan 1970 10:00:00 GMT"

</filesMatch>

12.07.2012 | Folie 30

Page 31: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

Priorität

Bei statischen Dateien, sollte starkes Caching dem schwachen Caching vorgezogen werden

Um Anfragen durch den Browser für gecachte Seite komplett zu vermeiden, sollten sowohl das ETag als auch Last-Modfied sicherheitshalber deaktiviert werden, wenn starkes Caching angewandt wird:

Header unset Last-ModifiedHeader unset Etag

12.07.2012 | Folie 31

Page 32: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTTP

SPDY [SPeedY]

Experimentelles Sitzungsprotokoll, das von Google entwickelt wird

Eigenschaften:− Multiplexed Streams

Mehrere Streams über eine einzelne TCP-Verbindung

− Request-Priorisierung

− HTTP-Header-Kompression

− Server-Push: Der Server kann ungefragt Daten an den Client ausliefern, die dieser wahrscheinlich benötig.

− Server-Hint Der Server kann den Client auf weitere Daten hinweisen, die dieser wahrscheinlich benötigt.

Von Firefox 11+ und Chrome unterstützt

Eigenes Modul für Apache ist vorhanden

Mehr Informationen: http://dev.chromium.org/spdy

12.07.2012 | Folie 32

Page 33: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Performance Optimierung im Quellcode

12.07.2012 | Folie 33

Page 34: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Beschleunigung des „Start to Render“

Zeichensatz im Content-Type-Header (HTTP)− Der Browser kann gleich mit der Verarbeitung des Quellcodes beginnen und muss nicht erst den

Zeichensatz ermitteln.

12.07.2012 | Folie 34

Page 35: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Beschleunigung des „Start to Render“

CSS am Anfang der Seite− Der Browser beginnt erst mit dem Rendern, sobald das CSS vollständig geladen ist.

12.07.2012 | Folie 35

Page 36: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Beschleunigung des „Start to Render“

JavaScript ganz am Ende der Seite− Der Browser unterbricht das Rendern des Seiteninhalts, bis er das komplette JavaScript gerendert hat

Ideal: JavaScript nachladen, wenn „onLoad“ gefeuert wird:

Quelle: https://developers.google.com/speed/docs/best-practices/payload?hl=de#DeferLoadingJS

12.07.2012 | Folie 36

Page 37: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Beschleunigung des „Start to Render“

Bei der ersten Anfrage so wenige Inhalte wie möglich laden− Alles andere kann später noch geladen werden

− Achtung: SEO-relevante Inhalte müssen immer geladen werden!

Beispiel Amazon:

12.07.2012 | Folie 37

Mit JavaScript Ohne JavaScript

Page 38: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Langsame CSS-Selektoren

Generische Selektoren: body *− Selektoren so spezifisch wie möglich machen, um unnötige Prüfungen zu vermeiden

Tags als letzter Selektor: ul li a− Der Browser muss für jedes Tag ermitteln, ob der Selektor passt und dafür bei allen, wo er nicht passt,

bis zur root-node zurückgehen

− Besser Klassen verwenden: a.linkInAList

Redundante Selektoren: ul#importantList− Die id ist sowieso eindeutig

12.07.2012 | Folie 38

Page 39: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

CSS beschleunigen

Nur die CSS-Regeln angeben, die notwendig sind− Auch ungenutzte Regeln müssen vom Browser geprüft und verarbeitet werden

− CSS-Dateien in Modulen aufsplitten und nur die benötigten beim Laden mergen und ausliefern

− Payoff: CSS-Dateien können nicht mehr so gut gecachet werden (Ein großer Nachteil)

@import vermeiden

12.07.2012 | Folie 39

Page 40: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

HTML & CSS

Diverses

Keine leeren src- oder href-Attribute− Manche Browser senden bei nicht angegebenen Dateinamen noch einen Request für das Root-

Verzeichnis der Domain

Zahl der DOM-Elemente reduzieren

Immer „width“ und „height“ von Bilder angeben

AJAX beschleunigen und Browser Caching für AJAX ermöglichen

12.07.2012 | Folie 40

Page 41: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Tools

Tools zum Testen

12.07.2012 | Folie 41

Page 42: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Tools

YSlow

12.07.2012 | Folie 42

Bewertet verschiedene Faktoren, die zur FE-Performance beitragen

Firefox-AddOn Integriert sich in Firebug Herausgegeben von Yahoo!

Page 43: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Tools

Page Speed von Google

12.07.2012 | Folie 43

Ähnliches Prinzip wie YSlow, überprüft aber teilweise andere Faktoren

Extension für Chrome Herausgegeben von Google

Page 44: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Tools

GTmetrix

12.07.2012 | Folie 44

Online-Tool, das YSlow und Page Speed kombiniert

http://gtmetrix.com/

Page 45: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Tools

Quellen

12.07.2012 | Folie 45

Sammlung von Best Practices bei Google - https://developers.google.com/speed/docs/best-practices/rules_intro

Best Practices bei Yahoo! - http://developer.yahoo.com/performance/rules.html

Page 46: Front End Performance Optimierung

| © dmc digital media center GmbH 2012 |Front End Performance – Mehr Geschwindigkeit für Webseiten

Bilder

Bildquellen

12.07.2012 | Folie 46

Folie 1− Bild von Mostly Dans (flickr), Lizenz: CC-BY 2.0

Folie 3− Bild von wwarby (flickr), Lizenz: CC-BY 2.0

Folie 13− Bild von internets_dairy (flickr), Lizenz: CC-BY 2.0

Folie 41− Bild von mueritz (flickr), Lizenz, Lizenz: CC BY-SA 2.0

Page 47: Front End Performance Optimierung

dmc digital media center GmbHRommelstraße 1170376 Stuttgart

Telefon: +49 711 601747-0Telefax: +49 711 601747-141 E-Mail: [email protected]: www.dmc.de