Performante Webanwendungen

Book description

  • Allgemeine Techniken zur Performanceoptimierung- Betrachtung von Client- und Serverseite, insbesondere deren Zusammenspiel- Theoretische und praktische Beispiele- Messen und Erkennen von Performance-Flaschenhälsen- Techniken zur Optimierung der Performance im Client und Server

Table of contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort
  5. Aufbau des Buchs
  6. Danksagung
  7. Inhaltsverzeichnis
  8. 1 Einführung in die Performance-Optimierung
    1. 1.1 Definition
    2. 1.2 Vielseitigkeit in Client-Server-Umgebungen
    3. 1.3 Mythen
    4. »Cachen bis der Arzt kommt«
    5. »Synchrone Verarbeitung ist langsam«
    6. »Lasttests brauchen doch nur große Anwendungen«
    7. »JavaScript ist langsam«
    8. »Ist das Internet heutzutage nicht schon schnell genug?«
    9. 1.4 Gründe für die Performance-Optimierung
      1. 1.4.1 Verfügbarkeit des Webangebots
      2. 1.4.2 Wirtschaftlicher Faktor
      3. 1.4.3 Kostenersparnis
      4. 1.4.4 Entwicklungsaufwand
      5. 1.4.5 Kundenzufriedenheit
      6. 1.4.6 Suchmaschinen-Ranking
      7. 1.4.7 Kapazitätsplanung
    10. 1.5 Performance-Bereiche
      1. 1.5.1 Hardware
      2. 1.5.2 Netzwerk
      3. 1.5.3 Betriebssystem & Virtualisierung
      4. 1.5.4 Programmiersprache, Frameworks & Bibliotheken
      5. 1.5.5 Architektur & Implementierung
      6. 1.5.6 Datenhaltung
      7. 1.5.7 Drittanbieter
      8. 1.5.8 Frontend & Usability
    11. 1.6 Best Practices
  9. 2 Grundlegende Optimierungsmöglichkeiten
    1. 2.1 Ermittlung der Performance
    2. 2.2 Planung von Überlast- und Ausfallszenarien
      1. 2.2.1 Graceful Degradation
      2. 2.2.2 Cloud-Dienste
    3. 2.3 Client- und serverseitiges Softwaredesign
      1. 2.3.1 Verbesserung der Usability und Nutzerführung
        1. Welche Inhalte interessieren den Nutzer?
        2. Arbeitsabläufe in der Webseite optimieren
      2. 2.3.2 Clientseitige Optimierung
        1. Optimierung der Datenübertragung
        2. Optimierung der Darstellung im Browser
      3. 2.3.3 Datenhaltung
      4. 2.3.4 Caching
      5. 2.3.5 Queuing-Services
    4. 2.4 Skalierung
  10. 3 Last- und Performance-Test
    1. 3.1 Definition und Abgrenzung
    2. 3.2 Allgemeine Vorgehensweise
    3. 3.3 Bestimmen der Kriterien
      1. 3.3.1 Definition der Kriterien
      2. 3.3.2 Quantifizieren der Kriterien
    4. 3.4 Durchführung von Lasttests
      1. 3.4.1 Methoden und Ergebnisse von Lasttests
      2. 3.4.2 Bestimmen der benötigten Last
      3. 3.4.3 Aufbau der Testumgebung
        1. Kennzahlen für Server und Anwendung:
        2. Kennzahlen bei der Lasterzeugung:
      4. 3.4.4 Tools für die Lasterzeugung
        1. Apache JMeter
        2. Apache Bench
        3. The Grinder
        4. Tsung
        5. Iago
      5. 3.4.5 Monitoring-Tools
        1. Cacti & Munin
        2. New Relic
        3. Collectd
        4. System-Monitoring mit »vmstat«
        5. Webserver-Monitoring
      6. 3.4.6 Konzept einer Lasttestumgebung
      7. 3.4.7 Erstellung eines Testplans
      8. 3.4.8 Durchführen der Tests
      9. 3.4.9 Analyse der Ergebnisse
      10. 3.4.10 Grenzen von Lasttests
    5. 3.5 Durchführung von serverseitigen Performance-Tests
      1. 3.5.1 Aufbau der Testarchitektur
      2. 3.5.2 Durchführung der Tests
      3. 3.5.3 Code-Profiling-Tools
      4. 3.5.4 Analyse der Ergebnisse
    6. 3.6 Durchführung von clientseitigen Performance-Tests
      1. 3.6.1 Analyse und Profiling
        1. Netzwerkaktivität
        2. Browser-Events
        3. Prozessorauslastung
        4. Visuell sichtbare Performance
        5. JavaScript-Profiling
        6. jsPerf
        7. SpeedTest-Tool
        8. CSS-Profiling
      2. 3.6.2 Monitoring
      3. 3.6.3 Automatisierung von Tests
        1. Selenium
        2. eValid
      4. 3.6.4 Clientseitige Tools
        1. »Firebug«-Erweiterung in Firefox
        2. »Developer Tools« in Chrome und Safari
        3. »F12-Entwicklertools« im Internet Explorer
        4. Google »PageSpeed Insights«
        5. Yahoo »YSlow«
        6. WebPagetest.org
        7. Fiddler Web Debugger
    7. 3.7 Grenzen von Performance-Tests
    8. 3.8 Beispiel eines Lasttests
  11. 4 Datenbankoptimierung
    1. 4.1 Datenbanktypen
      1. 4.1.1 Relationale Datenbanken
      2. 4.1.2 Key-Value Stores
      3. 4.1.3 Dokumentenorientierte Datenbanken
    2. 4.2 Allgemeine Optimierungsmöglichkeiten
      1. 4.2.1 Auswahl der Datenbank
      2. 4.2.2 Optimierung der Zugriffsart
      3. 4.2.3 Abfrageoptimierung
        1. Indexierung
        2. Joins
        3. Sortierung
        4. Views
        5. Stored Procedures
        6. Caching
        7. Prepared Statement
      4. 4.2.4 Optimierung des Datenmodells
        1. Grundkonzepte zur Datenstrukturierung
        2. EAV-Modell
        3. Normalformen
        4. 1. Normalform:
        5. 2. Normalform:
        6. 3. Normalform:
        7. Nachteile von Normalformen
        8. Flat-Tables
        9. Datenaggregation
      5. 4.2.5 Speicherformate
        1. Datenbanksystem MySQL
        2. Datenbanksystem MongoDB
    3. 4.3 Skalierung von Datenbanken
      1. 4.3.1 Partitionierung & Sharding
      2. 4.3.2 Replikation
        1. Master-Slave-Replikation
        2. Master-Master-Replikation
        3. Replikation in MongoDB
    4. 4.4 Beispiele
      1. Beispiel 1
        1. Beispiel 2
  12. 5 Caching
    1. 5.1 Übersicht über die Caching-Schichten
    2. 5.2 Arten von Caches
      1. 5.2.1 CPU-Cache
      2. 5.2.2 Festplatten-Cache
      3. 5.2.3 Anwendungscache
      4. 5.2.4 Distributed Caches
      5. 5.2.5 Zugriffszeiten
    3. 5.3 Caching-Strategien
    4. 5.4 Clientseitige Caches
      1. 5.4.1 Browser-Cache
      2. 5.4.2 Cookies
      3. 5.4.3 Web Storage/DOM Storage
      4. 5.4.4 IndexedDB/Web SQL Database
      5. 5.4.5 Application-Cache
        1. Ausliefern der Manifest-Datei
        2. Webserverkonfiguration
      6. 5.4.6 Zusammenfassung der Client-Caches
    5. 5.5 Serverseitige Caches
      1. 5.5.1 Memcached
      2. 5.5.2 Bytecode-Caches
      3. 5.5.3 Reverse Proxy Caches
    6. 5.6 Cachen von HTTP-Anfragen per HTTP-Header
      1. 5.6.1 Expires-Header
      2. 5.6.2 ETags
      3. 5.6.3 Browser-Cache invalidieren mit »Cache-Buster«
    7. 5.7 Probleme und Risiken von Caches
  13. 6 Asynchrone Verarbeitung und Queuing
    1. 6.1 Asynchrone Verarbeitung
      1. 6.1.1 Threads
      2. 6.1.2 Polling
      3. 6.1.3 Message Queues
    2. 6.2 Messaging
      1. 6.2.1 Einsatzszenarien
      2. 6.2.2 Kommunikationsstile
        1. Work Queues
        2. Publish/Subscribe
        3. Routing
        4. Topics
        5. Remote Procedure Calls
      3. 6.2.3 Software
      4. 6.2.4 Protokolle
      5. 6.2.5 Ausfallsicherheit und Datenwiederherstellung
      6. 6.2.6 Performance
  14. 7 Datenübertragung und Auslieferung
    1. 7.1 Funktionsweise der Datenübertragung via HTTP
      1. 7.1.1 HTTP-Request-Methoden
      2. 7.1.2 HTTP-Header-Felder
      3. 7.1.3 HTTP-Statuscodes
      4. 7.1.4 Keepalive
      5. 7.1.5 DNS
    2. 7.2 Optimierung des Inhalts
    3. 7.3 Reduzierung der HTTP-Requests
      1. 7.3.1 Redirects vermeiden
      2. 7.3.2 Zusammenfassen von JavaScript- und CSS-Dateien
      3. 7.3.3 Zusammenfassen von Grafiken (Sprites)
      4. 7.3.4 Direktes Einbetten von JavaScript, CSS, Grafiken und Webfonts
        1. Data-URLs
      5. 7.3.5 DNS-Requests reduzieren
      6. 7.3.6 Einsatz von Preloading und Lazy Loading
      7. 7.3.7 Vermeiden des Fehlercodes 404
    4. 7.4 Reduzierung der ausgelieferten Daten
      1. 7.4.1 Datenkompression
        1. Funktionsweise von HTTP-Datenkompression
        2. Aktivierung der Datenkompression
      2. 7.4.2 Minimierung der Daten
        1. HTML
        2. JavaScript
        3. Stylesheets
      3. 7.4.3 Kombination von Datenminimierung und -kompression
      4. 7.4.4 Bildoptimierung
        1. Richtiges Dateiforma t wählen
        2. Metadaten entfernen
        3. Clientseitiges Skalieren von Grafiken
        4. IMG-Attribut »src«
        5. Favicons
    5. 7.5 Infrastruktur optimieren
      1. 7.5.1 Verteilen der Daten auf Subdomains
      2. 7.5.2 Content Distribution/Content Delivery Networks
      3. 7.5.3 Webserver
    6. 7.6 Neue Technologien
      1. 7.6.1 WebSockets
      2. 7.6.2 Google SPDY
  15. 8 Darstellung auf dem Client
    1. 8.1 Funktionsweise eines Browsers
      1. 8.1.1 Mobile Browser
      2. 8.1.2 Browser-Events
    2. 8.2 Progressives Rendering
      1. 8.2.1 Webseiten teilweise übertragen
      2. 8.2.2 Positionen von CSS- und JavaScript-Dateien
      3. 8.2.3 Vergleich von <div> und <table>
      4. 8.2.4 Grafiken
    3. 8.3 Optimieren von Stylesheets
      1. 8.3.1 Einbinden von Stylesheet-Dateien
      2. 8.3.2 CSS-Selektor-Typen
      3. 8.3.3 CSS-Selektoren
        1. Interpretationsvorgang eines Selektors
        2. Effiziente Selektoren
        3. Reduzieren von Selektoren
      4. 8.3.4 Animationen und CSS-Effekte
        1. Animationen
        2. CSS-Effekte
      5. 8.3.5 CSS-Anweisung »@import«
      6. 8.3.6 Ladeverhalten medienabhängiger CSS-Dateien
    4. 8.4 JavaScript optimieren
      1. 8.4.1 Einbinden von JavaScript-Dateien
      2. 8.4.2 Just-in-Time-Compiler (JIT)
      3. 8.4.3 Datentypen
      4. 8.4.4 DOM-Manipulation
        1. DOM-Elemente erzeugen
      5. 8.4.5 Closures
        1. Nachteile von Closures
      6. 8.4.6 Geschwindigkeit der Funktion eval()
      7. 8.4.7 Web Worker - JavaScript-Code parallel ausführen
      8. 8.4.8 Memory Leaks
    5. 8.5 Beispiele
      1. 8.5.1 Parallelisierung auf der Clientseite: Laden von langsamen externen Inhalten
        1. Alternative 1: Auslagern in einen Ajax-Request
        2. Alternative 2: Webseite teilweise übertragen - »Early Flushing«
      2. 8.5.2 JavaScript-Animationen beschleunigen
  16. 9 Automatisierung
    1. 9.1 Optimierung im Build-/Deployment-Prozess
    2. 9.2 Optimieren von JavaScript- und Stylesheet-Dateien
    3. 9.3 Grafiken optimieren
    4. 9.4 Freie & kommerzielle Lösungen
      1. 9.4.1 WEBO Site SpeedUp
      2. 9.4.2 Google mod_pagespeed
      3. 9.4.3 Strangeloop Site Optimizer
      4. 9.4.4 Blaze.io
  17. Begrifflichkeiten
  18. Literatur
  19. Stichwortverzeichnis
  20. Fußnoten
    1. Kapitel 1
    2. Kapitel 2
    3. Kapitel 3
    4. Kapitel 4
    5. Kapitel 5
    6. Kapitel 7
    7. Kapitel 8
    8. Kapitel 9

Product information

  • Title: Performante Webanwendungen
  • Author(s): Daniel Kuhn, Michael Raith
  • Release date: March 2013
  • Publisher(s): dpunkt
  • ISBN: 97833864900082