Was ist mod_pagespeed?
Was macht Pagespeed Insight?
Zusammenfassung der Optimierungen
Praxisbeispiele
Ein Modul für Apache und NGINX
Verändert den HTML-Quelltext
Verändert die HTTP-Header
Legt einen optimierten Cache an
<img src="img_shop/products/.3/x13418_63035.jpg.pagespeed.ic.uXhF5iLsSI.jpg">
<script src="js/jquery.jselectbox.js+vendor,_jquery.elevateZoom.min.js+plugins.js.pagespeed.jc.MDoYSqI-Nc.js"></script>
<style>footer,header,nav{display:block}audio:not([controls]){display:none;height:0}</style>
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=31536000
Connection: keep-alive
Content-Length: 10746
Content-Type: image/png
Date: Tue, 08 Mar 2016 19:02:58 GMT
Etag: W/"0"
Expires: Wed, 08 Mar 2017 18:33:40 GMT
Last-Modified: Tue, 08 Mar 2016 18:33:40 GMT
Server: nginx
HTTP/1.1 304 Not Modified
Server: nginx
Date: Tue, 08 Mar 2016 19:02:58 GMT
Connection: keep-alive
51,6 KB | 14,0 KB |
Prüft die Perfomance der Webseite
Bilder optimieren
Bsp. spacer.gif
Komprimierung aktivieren
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE "application/atom+xml" \
"application/javascript" \
"application/json" \
"application/ld+json" \
"application/manifest+json" \
"application/rdf+xml" \
"application/rss+xml" \
"application/schema+json" \
"application/vnd.geo+json" \
"application/vnd.ms-fontobject" \
"application/x-font-ttf" \
"application/x-javascript" \
"application/x-web-app-manifest+json" \
"application/xhtml+xml" \
"application/xml" \
"font/eot" \
"font/opentype" \
"image/bmp" \
"image/svg+xml" \
"image/vnd.microsoft.icon" \
"image/x-icon" \
"text/cache-manifest" \
"text/css" \
"text/html" \
"text/javascript" \
"text/plain" \
"text/vcard" \
"text/vnd.rim.location.xloc" \
"text/vtt" \
"text/x-component" \
"text/x-cross-domain-policy" \
"text/xml"
</IfModule>
Browser-Caching nutzen
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 1 year"
# Data interchange
ExpiresByType application/atom+xml "access plus 1 hour"
ExpiresByType application/rdf+xml "access plus 1 hour"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/ld+json "access plus 0 seconds"
ExpiresByType application/schema+json "access plus 0 seconds"
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
# Favicon (cannot be renamed!) and cursor images
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 week"
# HTML
ExpiresByType text/html "access plus 0 seconds"
# JavaScript
ExpiresByType application/javascript "access plus 1 year"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType text/javascript "access plus 1 year"
# Manifest files
ExpiresByType application/manifest+json "access plus 1 week"
ExpiresByType text/cache-manifest "access plus 0 seconds"
# Media files
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType image/webp "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
# Web fonts
# Embedded OpenType (EOT)
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType font/eot "access plus 1 month"
# OpenType
ExpiresByType font/opentype "access plus 1 month"
# TrueType
ExpiresByType application/x-font-ttf "access plus 1 month"
# Web Open Font Format (WOFF) 1.0
ExpiresByType application/font-woff "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType font/woff "access plus 1 month"
# Web Open Font Format (WOFF) 2.0
ExpiresByType application/font-woff2 "access plus 1 month"
# Other
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
</IfModule>
<script async defer>
Vorteile:
Unter Apache schnell eingerichtet
Standardfilter meist schon ausreichend
Kaum Probleme durch gecachte Inhalte
# touch /var/cache/mod_pagespeed/cache.flush
http://url.tld/?ModPagespeed=off
Nachteile:
Unter NGINX schwer zu installieren
Aktuelle Version unterstützt kein srcset
oder picture
jpegtran und OptiPNG auf Servern installieren
Layout Klasse für Styles und Javascript
Alten CSS-Code löschen
Nicht benötigten Javascript Code und Bibliotheken löschen
VanillaJS einsetzen wenn möglich
PageSpeed Insights (auch als Addon) verwenden
Tasks mit Gulp automatisieren und optimieren
Nützliche Tools:
DOMMonster (Beispiel)
Critical CSS anzeigen
# apt-get install jpegoptim
# cd /path/to/images/
# find -type f -name "*.jpg" -exec sudo -u wwwuser jpegoptim -pqtm75 --strip-all {} \;
Benutzer ändern
HTTP/1.1 304 Not Modified
Server: nginx
Connection: keep-alive
# GZIP!
gzip on;
gzip_comp_level 6;
gzip_buffers 4 32k;
gzip_types "application/atom+xml"
"application/javascript"
"application/json"
"application/ld+json"
"application/manifest+json"
"application/rdf+xml"
"application/rss+xml"
"application/schema+json"
"application/vnd.geo+json"
"application/vnd.ms-fontobject"
"application/x-font-ttf"
"application/x-javascript"
"application/x-web-app-manifest+json"
"application/xhtml+xml"
"application/xml"
"font/eot"
"font/opentype"
"image/bmp"
"image/svg+xml"
"image/vnd.microsoft.icon"
"image/x-icon"
"text/cache-manifest"
"text/css"
"text/html"
"text/javascript"
"text/plain"
"text/vcard"
"text/vnd.rim.location.xloc"
"text/vtt"
"text/x-component"
"text/x-cross-domain-policy"
"text/xml";