SlideShare a Scribd company logo
Page Speed: low hanging legumes!
Things you can do too to speed up your page
2015, Erich Kachel @erichth
Page Speed: low hanging legumes!
• data reduction
• compression
• caches
• parallelity
2015, Erich Kachel @erichth
Where to start?
• STRG+ALT+I …is your friend!
• Check the footer – is it worth the work?
Cosmosdirekt.de
waz.de
gartenmoebel.de
spiegel.de
2015, Erich Kachel @erichth
Where to start?
• This was easy!
• But what about this one?
golem.de
2015, Erich Kachel @erichth
What the browser loades: Network tab
Network
2015, Erich Kachel @erichth
Sort by size: heavy load
• Stuff loaded: inline, CSS, JS, Async
• Check everything bigger than 50 Kbyte
SIZE
2015, Erich Kachel @erichth
Heavy load: images
• No over-dimensioned images!
• Right click on image -> „load in new tab“
• OK or over-dimensioned?
2015, Erich Kachel @erichth
Heavy load: examples
2015, Erich Kachel @erichth
Heavy load: examples
2015, Erich Kachel @erichth
2015, Erich Kachel @erichth
What to do now?
• remove!
• Load later „Lazy load“
• Will become W3C-standard: <img lazyload=„1“>
• Load when visible
• Will become W3C-standard : <img postpone=„1“>
• Resize to small
• compress
• cache
2015, Erich Kachel @erichth
Heavy load
• Use images with appropriate sizes
• Most CMS crop images – use this!
• Load retina-quality only when needed
2015, Erich Kachel @erichth
Compress big images
• Compress images with kraken.io
• Lossless compression: no quality loss!
86%
smaller!
2015, Erich Kachel @erichth
Sprites: one image instead of 30
• Combine small images to one
• crop every one with CSS
CSS crop
2015, Erich Kachel @erichth
What about JavaScript and CSS?
• Does every page need all of CSS?
• Can it be compressed?
2015, Erich Kachel @erichth
Full of empty space: JavaScript + CSS
• Activate compression in .htaccess
<IfModule mod_deflate.c>
<FilesMatch ".(js|css|txt|html)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>
YES!!
2015, Erich Kachel @erichth
Cache: unchanged content is unchanged!
2015, Erich Kachel @erichth
Cache: unchanged content is unchanged!
• Use for images, JS, CSS
• Caches store web page elements
• Browser can reuse elements
• Data is transfered only once
2015, Erich Kachel @erichth
Cache: unchanged content is unchanged!
• Activate caches in .htaccess
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/* A3600
ExpiresByType image/* A3600
</IfModule>
2015, Erich Kachel @erichth
Free meal, no costs!
Yeah!!
0 Byte
data!
Google knows how ;)
2015, Erich Kachel @erichth
So:
• remove!
• Load later
• Load when visible
• Resize to small
• compress
• cache
2015, Erich Kachel @erichth
The cascade: bottleneck „by design“
2015, Erich Kachel @erichth
The cascade: bottleneck „by design“
• HTTP/1.1 RFC a “single-user client
SHOULD NOT maintain more
than 2 connections with any server”
• Elements are loaded one by one
• Delay through just waiting! o.O
2015, Erich Kachel @erichth
The cascade: bottleneck „by design“
Browser
HTTP/1.1
connections
IE 8 6
Firefox 3 6
Safari 3,4 4
Chrome 4+ 6
iPhone 4 4
Opera 10.51+ 82015, Erich Kachel @erichth
The solution: simulate more server!
• Create virtual subdomains
• Browser loads objects parallely
• static1.domain.de/bild1.jpg
• static2.domain.de/bild2.jpg
• static3.domain.de/bild3.jpg
2015, Erich Kachel @erichth
404 errors eats server
• STRG+ALT+I …is your friend!
• Sort by status
2015, Erich Kachel @erichth
404 errors eats server
• Look for 404 errors!
• Missing images also trigger 404 pages
• heavy 404 error pages can kill your server
2015, Erich Kachel @erichth
404 errors eats server
• What‘s the problem with 404 error pages?
• … they consume server performance!
• example: http://www.planet-ic.de/a starts search!
• <img src=„http://planet-ic.de/nixda“> does it too!
2015, Erich Kachel @erichth
404 errors eats server
• Easy to find
• Can be the reason for bad server performance
• … but on small pages, almost insignificant
2015, Erich Kachel @erichth
JS, Audiofiles, Soundcloud …
• Load complex scripts later
• Image gallery, audioplayer, videoplayer
• Load on demand
• But: you then have no precaching
2015, Erich Kachel @erichth
… but there is more
• Load images from CDN - performant
• jQuery, fonts from Google CDN – cached
• Retina-quality only on request
• Put CSS in header, move JS in footer
• Load ad server code in footer
• Cookie-free subdomains for images / JS / CSS
2015, Erich Kachel @erichth
All together
• Look out for big elements & get rid of them
• images: resize, compress, cache
• CSS, JS: compress, gzip-Encoding
• Icons, Symbols: make SPRITES
• Video, audio: use „lazy load“
• Check for 404 errors
• Use subdomains for images / JS / CSS
• Load JS just before </body>
• Better: load JS async! <script async src=„“>2015, Erich Kachel @erichth
About me
Erich Kachel
CTO @ AKM3
http://www.erich-kachel.de
@erichth
2015, Erich Kachel @erichth

More Related Content

What's hot

Extending OnDemand with Atlassian Connect Add-ons
Extending OnDemand with Atlassian Connect Add-onsExtending OnDemand with Atlassian Connect Add-ons
Extending OnDemand with Atlassian Connect Add-onscolleenfry
 
A Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePointA Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePoint
Mark Rackley
 
Contributing Back to WordPress - Getting Involved in the Community
Contributing Back to WordPress - Getting Involved in the CommunityContributing Back to WordPress - Getting Involved in the Community
Contributing Back to WordPress - Getting Involved in the Community
Zero Point Development
 
Citizen Developers Intro to jQuery Customizations in SharePoint
Citizen Developers Intro to jQuery Customizations in SharePointCitizen Developers Intro to jQuery Customizations in SharePoint
Citizen Developers Intro to jQuery Customizations in SharePoint
Mark Rackley
 
MeteorJS Session
MeteorJS SessionMeteorJS Session
MeteorJS Session
Shreyans Gandhi
 
WordPress Meetup Bandung - December 2014
WordPress Meetup Bandung - December 2014WordPress Meetup Bandung - December 2014
WordPress Meetup Bandung - December 2014
Fikri Rasyid
 
Utilizing jQuery in SharePoint: Get More Done Faster
Utilizing jQuery in SharePoint: Get More Done FasterUtilizing jQuery in SharePoint: Get More Done Faster
Utilizing jQuery in SharePoint: Get More Done Faster
Mark Rackley
 
Office 365 vs. Google Apps
Office 365 vs. Google AppsOffice 365 vs. Google Apps
Office 365 vs. Google Apps
Bay Area Consultants Network
 
eWalk - classroom observations
eWalk - classroom observationseWalk - classroom observations
eWalk - classroom observations
pshuster
 
WordPress Hooks (Actions & Filters)
WordPress Hooks (Actions & Filters)WordPress Hooks (Actions & Filters)
WordPress Hooks (Actions & Filters)
MuhammadKashif596
 
AWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons Learned
AWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons LearnedAWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons Learned
AWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons Learned
AWS Germany
 
[GeekTalk#2] Takaaki Mizuno - Api Url Design
[GeekTalk#2] Takaaki Mizuno - Api Url Design[GeekTalk#2] Takaaki Mizuno - Api Url Design
[GeekTalk#2] Takaaki Mizuno - Api Url Design
Nexus FrontierTech
 
Building Serverless with Firebase
Building Serverless with FirebaseBuilding Serverless with Firebase
Building Serverless with Firebase
Jerry Jalava
 
WP 101 - Local Development - Themes and Plugins
WP 101 - Local Development - Themes and PluginsWP 101 - Local Development - Themes and Plugins
WP 101 - Local Development - Themes and Plugins
Joe Querin
 
A Tale of 3 CLIs - Angular 2, Ember, and React
A Tale of 3 CLIs - Angular 2, Ember, and ReactA Tale of 3 CLIs - Angular 2, Ember, and React
A Tale of 3 CLIs - Angular 2, Ember, and React
Tracy Lee
 
Hateoas APIs are about relationships
Hateoas APIs are about relationshipsHateoas APIs are about relationships
Hateoas APIs are about relationshipsMatt Bishop
 
How Entreprenuers Launch Ideas with WordPress
How Entreprenuers Launch Ideas with WordPressHow Entreprenuers Launch Ideas with WordPress
How Entreprenuers Launch Ideas with WordPress
John Housholder
 
.NET Development with the Tools You Know (and a Few You Might Not)
.NET Development with the Tools You Know (and a Few You Might Not).NET Development with the Tools You Know (and a Few You Might Not)
.NET Development with the Tools You Know (and a Few You Might Not)
Allen-Michael (AM) Grobelny
 

What's hot (20)

Extending OnDemand with Atlassian Connect Add-ons
Extending OnDemand with Atlassian Connect Add-onsExtending OnDemand with Atlassian Connect Add-ons
Extending OnDemand with Atlassian Connect Add-ons
 
Cain & Obenland — Episode 4
Cain & Obenland — Episode 4Cain & Obenland — Episode 4
Cain & Obenland — Episode 4
 
A Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePointA Power User's intro to jQuery awesomeness in SharePoint
A Power User's intro to jQuery awesomeness in SharePoint
 
Contributing Back to WordPress - Getting Involved in the Community
Contributing Back to WordPress - Getting Involved in the CommunityContributing Back to WordPress - Getting Involved in the Community
Contributing Back to WordPress - Getting Involved in the Community
 
Citizen Developers Intro to jQuery Customizations in SharePoint
Citizen Developers Intro to jQuery Customizations in SharePointCitizen Developers Intro to jQuery Customizations in SharePoint
Citizen Developers Intro to jQuery Customizations in SharePoint
 
MeteorJS Session
MeteorJS SessionMeteorJS Session
MeteorJS Session
 
WordPress Meetup Bandung - December 2014
WordPress Meetup Bandung - December 2014WordPress Meetup Bandung - December 2014
WordPress Meetup Bandung - December 2014
 
Experience Power BI
Experience Power BIExperience Power BI
Experience Power BI
 
Utilizing jQuery in SharePoint: Get More Done Faster
Utilizing jQuery in SharePoint: Get More Done FasterUtilizing jQuery in SharePoint: Get More Done Faster
Utilizing jQuery in SharePoint: Get More Done Faster
 
Office 365 vs. Google Apps
Office 365 vs. Google AppsOffice 365 vs. Google Apps
Office 365 vs. Google Apps
 
eWalk - classroom observations
eWalk - classroom observationseWalk - classroom observations
eWalk - classroom observations
 
WordPress Hooks (Actions & Filters)
WordPress Hooks (Actions & Filters)WordPress Hooks (Actions & Filters)
WordPress Hooks (Actions & Filters)
 
AWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons Learned
AWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons LearnedAWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons Learned
AWS Summit Berlin 2013 - EyeEm - A Scalable Cloud Architecture - Lessons Learned
 
[GeekTalk#2] Takaaki Mizuno - Api Url Design
[GeekTalk#2] Takaaki Mizuno - Api Url Design[GeekTalk#2] Takaaki Mizuno - Api Url Design
[GeekTalk#2] Takaaki Mizuno - Api Url Design
 
Building Serverless with Firebase
Building Serverless with FirebaseBuilding Serverless with Firebase
Building Serverless with Firebase
 
WP 101 - Local Development - Themes and Plugins
WP 101 - Local Development - Themes and PluginsWP 101 - Local Development - Themes and Plugins
WP 101 - Local Development - Themes and Plugins
 
A Tale of 3 CLIs - Angular 2, Ember, and React
A Tale of 3 CLIs - Angular 2, Ember, and ReactA Tale of 3 CLIs - Angular 2, Ember, and React
A Tale of 3 CLIs - Angular 2, Ember, and React
 
Hateoas APIs are about relationships
Hateoas APIs are about relationshipsHateoas APIs are about relationships
Hateoas APIs are about relationships
 
How Entreprenuers Launch Ideas with WordPress
How Entreprenuers Launch Ideas with WordPressHow Entreprenuers Launch Ideas with WordPress
How Entreprenuers Launch Ideas with WordPress
 
.NET Development with the Tools You Know (and a Few You Might Not)
.NET Development with the Tools You Know (and a Few You Might Not).NET Development with the Tools You Know (and a Few You Might Not)
.NET Development with the Tools You Know (and a Few You Might Not)
 

Similar to Page speed: low hanging legumes

Building fast aspnet websites
Building fast aspnet websitesBuilding fast aspnet websites
Building fast aspnet websites
Maarten Louage
 
Html5 shubelal
Html5 shubelalHtml5 shubelal
Html5 shubelal
Shub
 
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Mike Schinkel
 
The web context
The web contextThe web context
The web context
Dan Phiffer
 
Flexible web publishing with Expression Engine
Flexible web publishing with Expression EngineFlexible web publishing with Expression Engine
Flexible web publishing with Expression Engine
Harvard Web Working Group
 
Codecinella / Using CodePen to learn, prototype and inspire the front end
Codecinella / Using CodePen to learn, prototype and inspire the front endCodecinella / Using CodePen to learn, prototype and inspire the front end
Codecinella / Using CodePen to learn, prototype and inspire the front end
Andrea Roenning
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Ofer Zelig
 
Scope website - how to make an accessible website
Scope website - how to make an accessible websiteScope website - how to make an accessible website
Scope website - how to make an accessible website
Ilesh Mistry
 
Wordpress beyond blogging
Wordpress beyond bloggingWordpress beyond blogging
Wordpress beyond blogging
Julien Minguely
 
Rapid WordPress theme development
Rapid WordPress theme developmentRapid WordPress theme development
Rapid WordPress theme development
Jonny Allbut
 
The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your websitehernanibf
 
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
David Wesst
 
Progressively Enhancing WordPress Themes
Progressively Enhancing WordPress ThemesProgressively Enhancing WordPress Themes
Progressively Enhancing WordPress Themes
Digitally
 
Curtin University Frontend Web Development
Curtin University Frontend Web DevelopmentCurtin University Frontend Web Development
Curtin University Frontend Web Development
Daryll Chu
 
Spirit-teknologiapäivät Petri Niemi HTML5 & JavaScript Developereille
Spirit-teknologiapäivät Petri Niemi HTML5 & JavaScript DevelopereilleSpirit-teknologiapäivät Petri Niemi HTML5 & JavaScript Developereille
Spirit-teknologiapäivät Petri Niemi HTML5 & JavaScript DevelopereilleTieturi Oy
 
Performance - When, What and How
Performance - When, What and HowPerformance - When, What and How
Performance - When, What and How
Astrails
 
WordPress Intermediate Workshop
WordPress Intermediate WorkshopWordPress Intermediate Workshop
WordPress Intermediate Workshop
The Toolbox, Inc.
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計傳錡 蕭
 
Drawing the Line with Browser Compatibility
Drawing the Line with Browser CompatibilityDrawing the Line with Browser Compatibility
Drawing the Line with Browser Compatibilityjsmith92
 

Similar to Page speed: low hanging legumes (20)

Building fast aspnet websites
Building fast aspnet websitesBuilding fast aspnet websites
Building fast aspnet websites
 
Html5 shubelal
Html5 shubelalHtml5 shubelal
Html5 shubelal
 
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)
 
The web context
The web contextThe web context
The web context
 
Flexible web publishing with Expression Engine
Flexible web publishing with Expression EngineFlexible web publishing with Expression Engine
Flexible web publishing with Expression Engine
 
Codecinella / Using CodePen to learn, prototype and inspire the front end
Codecinella / Using CodePen to learn, prototype and inspire the front endCodecinella / Using CodePen to learn, prototype and inspire the front end
Codecinella / Using CodePen to learn, prototype and inspire the front end
 
Pearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET DeveloperPearls and Must-Have Tools for the Modern Web / .NET Developer
Pearls and Must-Have Tools for the Modern Web / .NET Developer
 
Scope website - how to make an accessible website
Scope website - how to make an accessible websiteScope website - how to make an accessible website
Scope website - how to make an accessible website
 
Wordpress beyond blogging
Wordpress beyond bloggingWordpress beyond blogging
Wordpress beyond blogging
 
Rapid WordPress theme development
Rapid WordPress theme developmentRapid WordPress theme development
Rapid WordPress theme development
 
The things we found in your website
The things we found in your websiteThe things we found in your website
The things we found in your website
 
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
Rich and Beautiful: Making Attractive Apps in HTML5 [Wpg 2013]
 
Progressively Enhancing WordPress Themes
Progressively Enhancing WordPress ThemesProgressively Enhancing WordPress Themes
Progressively Enhancing WordPress Themes
 
Curtin University Frontend Web Development
Curtin University Frontend Web DevelopmentCurtin University Frontend Web Development
Curtin University Frontend Web Development
 
Spirit-teknologiapäivät Petri Niemi HTML5 & JavaScript Developereille
Spirit-teknologiapäivät Petri Niemi HTML5 & JavaScript DevelopereilleSpirit-teknologiapäivät Petri Niemi HTML5 & JavaScript Developereille
Spirit-teknologiapäivät Petri Niemi HTML5 & JavaScript Developereille
 
Performance - When, What and How
Performance - When, What and HowPerformance - When, What and How
Performance - When, What and How
 
Html5 public
Html5 publicHtml5 public
Html5 public
 
WordPress Intermediate Workshop
WordPress Intermediate WorkshopWordPress Intermediate Workshop
WordPress Intermediate Workshop
 
網頁程式設計
網頁程式設計網頁程式設計
網頁程式設計
 
Drawing the Line with Browser Compatibility
Drawing the Line with Browser CompatibilityDrawing the Line with Browser Compatibility
Drawing the Line with Browser Compatibility
 

Recently uploaded

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 

Recently uploaded (20)

Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 

Page speed: low hanging legumes

  • 1. Page Speed: low hanging legumes! Things you can do too to speed up your page 2015, Erich Kachel @erichth
  • 2. Page Speed: low hanging legumes! • data reduction • compression • caches • parallelity 2015, Erich Kachel @erichth
  • 3. Where to start? • STRG+ALT+I …is your friend! • Check the footer – is it worth the work? Cosmosdirekt.de waz.de gartenmoebel.de spiegel.de 2015, Erich Kachel @erichth
  • 4. Where to start? • This was easy! • But what about this one? golem.de 2015, Erich Kachel @erichth
  • 5. What the browser loades: Network tab Network 2015, Erich Kachel @erichth
  • 6. Sort by size: heavy load • Stuff loaded: inline, CSS, JS, Async • Check everything bigger than 50 Kbyte SIZE 2015, Erich Kachel @erichth
  • 7. Heavy load: images • No over-dimensioned images! • Right click on image -> „load in new tab“ • OK or over-dimensioned? 2015, Erich Kachel @erichth
  • 8. Heavy load: examples 2015, Erich Kachel @erichth
  • 9. Heavy load: examples 2015, Erich Kachel @erichth
  • 10. 2015, Erich Kachel @erichth
  • 11. What to do now? • remove! • Load later „Lazy load“ • Will become W3C-standard: <img lazyload=„1“> • Load when visible • Will become W3C-standard : <img postpone=„1“> • Resize to small • compress • cache 2015, Erich Kachel @erichth
  • 12. Heavy load • Use images with appropriate sizes • Most CMS crop images – use this! • Load retina-quality only when needed 2015, Erich Kachel @erichth
  • 13. Compress big images • Compress images with kraken.io • Lossless compression: no quality loss! 86% smaller! 2015, Erich Kachel @erichth
  • 14. Sprites: one image instead of 30 • Combine small images to one • crop every one with CSS CSS crop 2015, Erich Kachel @erichth
  • 15. What about JavaScript and CSS? • Does every page need all of CSS? • Can it be compressed? 2015, Erich Kachel @erichth
  • 16. Full of empty space: JavaScript + CSS • Activate compression in .htaccess <IfModule mod_deflate.c> <FilesMatch ".(js|css|txt|html)$"> SetOutputFilter DEFLATE </FilesMatch> </IfModule> YES!! 2015, Erich Kachel @erichth
  • 17. Cache: unchanged content is unchanged! 2015, Erich Kachel @erichth
  • 18. Cache: unchanged content is unchanged! • Use for images, JS, CSS • Caches store web page elements • Browser can reuse elements • Data is transfered only once 2015, Erich Kachel @erichth
  • 19. Cache: unchanged content is unchanged! • Activate caches in .htaccess <IfModule mod_expires.c> ExpiresActive On ExpiresByType text/* A3600 ExpiresByType image/* A3600 </IfModule> 2015, Erich Kachel @erichth
  • 20. Free meal, no costs! Yeah!! 0 Byte data! Google knows how ;) 2015, Erich Kachel @erichth
  • 21. So: • remove! • Load later • Load when visible • Resize to small • compress • cache 2015, Erich Kachel @erichth
  • 22. The cascade: bottleneck „by design“ 2015, Erich Kachel @erichth
  • 23. The cascade: bottleneck „by design“ • HTTP/1.1 RFC a “single-user client SHOULD NOT maintain more than 2 connections with any server” • Elements are loaded one by one • Delay through just waiting! o.O 2015, Erich Kachel @erichth
  • 24. The cascade: bottleneck „by design“ Browser HTTP/1.1 connections IE 8 6 Firefox 3 6 Safari 3,4 4 Chrome 4+ 6 iPhone 4 4 Opera 10.51+ 82015, Erich Kachel @erichth
  • 25. The solution: simulate more server! • Create virtual subdomains • Browser loads objects parallely • static1.domain.de/bild1.jpg • static2.domain.de/bild2.jpg • static3.domain.de/bild3.jpg 2015, Erich Kachel @erichth
  • 26. 404 errors eats server • STRG+ALT+I …is your friend! • Sort by status 2015, Erich Kachel @erichth
  • 27. 404 errors eats server • Look for 404 errors! • Missing images also trigger 404 pages • heavy 404 error pages can kill your server 2015, Erich Kachel @erichth
  • 28. 404 errors eats server • What‘s the problem with 404 error pages? • … they consume server performance! • example: http://www.planet-ic.de/a starts search! • <img src=„http://planet-ic.de/nixda“> does it too! 2015, Erich Kachel @erichth
  • 29. 404 errors eats server • Easy to find • Can be the reason for bad server performance • … but on small pages, almost insignificant 2015, Erich Kachel @erichth
  • 30. JS, Audiofiles, Soundcloud … • Load complex scripts later • Image gallery, audioplayer, videoplayer • Load on demand • But: you then have no precaching 2015, Erich Kachel @erichth
  • 31. … but there is more • Load images from CDN - performant • jQuery, fonts from Google CDN – cached • Retina-quality only on request • Put CSS in header, move JS in footer • Load ad server code in footer • Cookie-free subdomains for images / JS / CSS 2015, Erich Kachel @erichth
  • 32. All together • Look out for big elements & get rid of them • images: resize, compress, cache • CSS, JS: compress, gzip-Encoding • Icons, Symbols: make SPRITES • Video, audio: use „lazy load“ • Check for 404 errors • Use subdomains for images / JS / CSS • Load JS just before </body> • Better: load JS async! <script async src=„“>2015, Erich Kachel @erichth
  • 33. About me Erich Kachel CTO @ AKM3 http://www.erich-kachel.de @erichth 2015, Erich Kachel @erichth

Editor's Notes

  1. Einbindung eines falsch verlinkten Bildes in der GIGA Sidebar