SlideShare a Scribd company logo
The 5 most common reasons
for a slow WordPress site
– and how to fix them
Otto Kekäläinen
@ottokekalainen
WP Meetup
October 2019 Edition
● A CEO who codes at Seravo.com
● Written WP themes and plugins,
contributed to WordPress Core,
MySQL, MariaDB, Debian,
Ubuntu, Linux kernel,
AppArmor…
● Linux and open source advocate
Otto Kekäläinen
The 5 most common reasons for a
slow WordPress site
1. Unnecessarily large image files
2. Too many HTTP requests and assets loaded in vain
3. Web servers that are slow or lack HTTP/2
4. Caches not working as they should
5. Code fetching too much external data before printing
out the WordPress HTML for visitors to see
1. Unnecessarily large
image files
Unnecessarily large image files
The pictures from modern mobile
phones are huge. A single image
from a 8 Mpix camera is easily 3
MB in size and 3840x2160 in
dimensions.
My laptop: 1920x1080
Iphone X: 2436x1125
On websites any image over
1000px per side is usually waste
of space.
Unnecessarily large image files
Check it yourself: press F12 to
open the developer console in a
browser.
See tab Network and check
image files Size and Time.
Unnecessarily large image files
Another tool: webpagetest.org
Unnecessarily large image files
Solution:
● Always use one of the image
sizes generated by
WordPress, never full size.
● Use open source
command-line tools like
optipng and jpegoptim to
optimize your images.
● There are also plugins that
send your images for
processing on a remote
server.
Unnecessarily large image files
Smart server environments and
development tools take care of image
optimization automatically.
wp-optimize-images
No path given as argument. Using default path.
Scanning for image files in
/data/wordpress/htdocs/wp-content/uploads/
Found 9 images in total and 6 new images.
...
---> Optimizing otto-normal-full-size-1568x2788.jpg ...
File size reduction: 360K --> 324K
Optimized image by: 10.3697 %
---> Optimizing otto-normal-full-size-169x300.jpg ...
File size reduction: 16K --> 16K
Optimized image by: 7.47187 %
---> Optimizing otto-normal-full-size.jpg ...
File size reduction: 868K --> 464K
Optimized image by: 46.6131 %
Optimized 6 images for a total of 463KiB saved!
Unnecessarily large image files
Remember to validate after changes!
2. Too many HTTP
requests and assets
loaded in vain
Too many HTTP requests and
assets loaded in vain
With the same web developer
console or webpagetest.org tool
you can see how many HTTP
requests were made and the total
size of download:
Solution:
● Uninstall unnecessary
plugins
● If you see a contact form
plugin load on every page,
report that as a bug to the
plugin author. It should load
it’s assets only on the page
where the contact form
actually is on.
If you see this in webpagetest.org
results then you know the
bandwidth of the visitor is
saturated:
Since you can’t increase the
visitors’ bandwidth, you must
slim down your site contents.
Front page should below 100 HTTP requests and 1000
kb, but 30 req and 300 kb is often doable with some
smart design.
Too many HTTP requests and
assets loaded in vain
Don’t try to solve
performance issues
by installing more
plugins!
Since WordPress 5.2 the core now has the Site Health page that also
recommends uninstalling all unused plugins and themes, which is always a
good practice!
Too many HTTP requests and
assets loaded in vain
Too many HTTP requests and
assets loaded in vain
What about minification and
concatenation = combining many
.js and .css files into one?
Ensure your site is server
with HTTP/2 which has
similar features built into
the protocol.
With modern browsers and
HTTP/2 the benefits of
minification and
concatenation is marginal.
Use your developer time on
something else!
Extra tip: native lazy loading images
● Latest Chrome supports new <img> attribute loading=”lazy” that
postpones downloading the image until visitor scrolls down to it.
● For WordPress 5.x sites: wp plugin install --activate native-lazyload
● Read more at wordpress.org/plugins/native-lazyload/
3. Web servers that are
slow or lack HTTP/2
The front page of a fresh
WordPress installation
should load in under 300
ms when tested on
webpagetest.org.
Click on the
request to see
details, and check
for HTTP/2.
Web servers that are slow or
lack HTTP/2
For developers: learn how to use
the command-line tool curl:
● Tests WordPress specifically
= HTML output of a site
● Shows headers as well.
● Does not cache, all redirects
et al are always really from
the server and not your
browser’s memory.
Web servers that are slow or
lack HTTP/2
curl -Ls https://example.com/article/ -o
/dev/null -w '%{http_code}
%{time_total}n'
200 0,341418
curl -ILs -H Pragma:no-cache seravo.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Thu, 23 May 2019 14:32:51 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://seravo.com/
Web servers that are slow or
lack HTTP/2
You get what you pay for with
hosting that costs only 2,95€ per
month. Don’t try to save 20 euros
in the wrong place, it won’t be
worth it once you get trouble!
A good hosting solution will not
only be much faster than
average, but also usually include
better technology (HTTP/2,
Redis caching, gzip
compression) and some
companies even offer upkeep
that covers monitoring, updates,
security and much more.
4. Caches not working as
they should
Caches not working as they should
Unfortunately the quality of many
WordPress plugins and themes
are low, and they do things that
bust the cache:
● emit cache denying headers
● set cookies for all visitors
HTTP caching is very important,
since when it works, the HTML
from WordPress/PHP does not
need to be fetched at all and
everything is much faster from
the server.
HTTP caching also happens in
the browser and what is fetched
from browser memory is very
quickly shown to the visitor!
Caches not working as they should
While webpagetest.org also
shows cache headers and
statuses, using curl is invaluable
since you can make changes on
the server validate it in an instant:
Look for headers like:
● cache-control
● expires
● age
● set-cookie
Good read:
https://developer.mozilla.org/e
n-US/docs/Web/HTTP/Caching
curl -ILs https://example.com/
HTTP/2 200
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
expires: Wed, 11 Jan 1984 05:00:00 GMT
cache-control: no-cache, must-revalidate,
max-age=0
Caches not working as they should
Cookies imply that there is a
session and that the HTML page
contents is individually tailored,
thus no caching.
Cookies should not be used for
language selection or for storing
cookie consent info (sic!).
The old PHPSESSION cookies
should not be in use anywhere
anymore!
On a WooCommerce site cookies
might make sense, since the
page might have a shopping cart
or a “Hello <name>” section that
is supposed to be shown to this
only one user.
Extra tip: test HTTP cache
● For Seravo’s customers: wp-check-http-cache
Caches not working as they should
Remember, caching is also good for the environment!
(Prevents excess CPU cycles from happening.)
5. Code is doing too much
Code is doing too much
Typically developers don’t test
their plugins with large amounts
of data and they work well on
small sites.
As sites grow, all problems related
to excess data manipulation
become visible.
External API calls in PHP typically
also block the entire site from
loading if the external API is down.
Solution:
● Inject more data on a test
site and see how it behaves
● In code, don’t always fetch
everything from the
database. Remember
“LIMIT N” in SQL, OK?
● Design code to do only what
is needed for the view,
nothing else.
Code is doing too much
Finding the code bottlenecks is
hard without proper tools.
Solution:
● Code profiling
● XDebug on test sites
● Tideways on production
sites
Code is doing too much
XDebug + Webgrind
More at: https://seravo.com/docs/development/xdebug/
Code is doing too much
Tideways.com
More at: https://seravo.com/docs/development/tideways/
Code is doing too much
The database is often the
performance bottleneck. See my
other talk on WordPress and
database optimization:
More in-depth code profiling tips
in my WordPress performance
talk:
wordpress.tv/?s=otto+kekäläinen
Extra tip: test with network block
● For Seravo’s customers: wp-check-remote-failure
Thank you!
For more tips read blogs at
seravo.com (in English) or
wp-palvelu.fi (suomeksi)
or sign up at
seravo.com/newsletter-for-wordpress-developers/
Premium hosting
and upkeep for
WordPress
HTTP/2
TESTED
UPDATES
24/7 UPKEEP
0. Who is Otto and what is Seravo
a. Follow on Twitter to get slides
1. Too big image file sizes
a. Typical with modern mobile phones and on blogs
b. See it yourself in the developer console, page size should be <1MB
c. How to use webpagetest.org to measure it
d. Optimize images with open source tools yourself or install a plugin - Seravo has wp-optimize-images
2. Too many HTTP requests and assets loaded in vain
a. Look at web developer console how many requests are made on every page
b. Remove excess cruft, remove unnecessary plugins. WP 5.2 health check helps!
c. Don’t try to solve speed issues by installing more plugins!
d. Forget minification and concatenation - ensure you have HTTP/2 instead
3. Slow web server, cheap hosting, lack of HTTP/2
a. Fast web server - WP out of the box should load in 200 ms
b. How to use curl to measure it
c. Browser developer console
d. Hosting should cost closer 30-50 euros per month
e. Good hosting takes automatically care of many server side things, like HTTP caching, Redis based object caching, HTTP/2, gzip compression etc
4. Cache busted
a. How to use curl to see cache headers
b. Avoid cookies set in vain
i. WooCommerce OK
ii. Cookie consent or WPML is not OK use case for cookies
5. Code is doing too much
a. XDebug
b. Tideways
c. Database size often the culprit, see my other talk
d. See my WC Europe talk. See you this year as well?
6. Software Architect tips
a. Blocking JavaScript
b. AMP - don’t do it
c. Progressive web applications - the future

More Related Content

What's hot

Improving WordPress performance (xdebug and profiling)
Improving WordPress performance (xdebug and profiling)Improving WordPress performance (xdebug and profiling)
Improving WordPress performance (xdebug and profiling)Otto Kekäläinen
 
Front End Website Optimization
Front End Website OptimizationFront End Website Optimization
Front End Website OptimizationGerard Sychay
 
Front-End Performance Optimizing
Front-End Performance OptimizingFront-End Performance Optimizing
Front-End Performance OptimizingMichael Pehl
 
Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!WordCamp Cape Town
 
Automatic testing and quality assurance for WordPress plugins
Automatic testing and quality assurance for WordPress pluginsAutomatic testing and quality assurance for WordPress plugins
Automatic testing and quality assurance for WordPress pluginsOtto Kekäläinen
 
Find WordPress performance bottlenecks with XDebug PHP profiling
Find WordPress performance bottlenecks with XDebug PHP profilingFind WordPress performance bottlenecks with XDebug PHP profiling
Find WordPress performance bottlenecks with XDebug PHP profilingOtto Kekäläinen
 
Pagespeed what, why, and how it works
Pagespeed   what, why, and how it worksPagespeed   what, why, and how it works
Pagespeed what, why, and how it worksIlya Grigorik
 
How I learned to stop worrying and love the .htaccess file
How I learned to stop worrying and love the .htaccess fileHow I learned to stop worrying and love the .htaccess file
How I learned to stop worrying and love the .htaccess fileRoxana Stingu
 
EasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on NginxEasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on NginxrtCamp
 
Heavy Web Optimization: Frontend
Heavy Web Optimization: FrontendHeavy Web Optimization: Frontend
Heavy Web Optimization: FrontendVõ Duy Tuấn
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notesPerrin Harkins
 
Optimizing your WordPress website
Optimizing your WordPress websiteOptimizing your WordPress website
Optimizing your WordPress websitemwfordesigns
 
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...Andrea Cardinali
 
How I Learned to Stop Worrying and Backup WordPress
How I Learned to Stop Worrying and Backup WordPressHow I Learned to Stop Worrying and Backup WordPress
How I Learned to Stop Worrying and Backup WordPressChris Jean
 
SQL Server - CLR integration
SQL Server - CLR integrationSQL Server - CLR integration
SQL Server - CLR integrationPeter Gfader
 
Low maintenance perl notes
Low maintenance perl notesLow maintenance perl notes
Low maintenance perl notesPerrin Harkins
 
Automatic testing and quality assurance for WordPress plugins and themes
Automatic testing and quality assurance for WordPress plugins and themesAutomatic testing and quality assurance for WordPress plugins and themes
Automatic testing and quality assurance for WordPress plugins and themesOtto Kekäläinen
 
Bigger Stronger Faster
Bigger Stronger FasterBigger Stronger Faster
Bigger Stronger FasterChris Love
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de SitesCaelum
 

What's hot (20)

Improving WordPress performance (xdebug and profiling)
Improving WordPress performance (xdebug and profiling)Improving WordPress performance (xdebug and profiling)
Improving WordPress performance (xdebug and profiling)
 
Front End Website Optimization
Front End Website OptimizationFront End Website Optimization
Front End Website Optimization
 
Front-End Performance Optimizing
Front-End Performance OptimizingFront-End Performance Optimizing
Front-End Performance Optimizing
 
Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!Anthony Somerset - Site Speed = Success!
Anthony Somerset - Site Speed = Success!
 
Automatic testing and quality assurance for WordPress plugins
Automatic testing and quality assurance for WordPress pluginsAutomatic testing and quality assurance for WordPress plugins
Automatic testing and quality assurance for WordPress plugins
 
Find WordPress performance bottlenecks with XDebug PHP profiling
Find WordPress performance bottlenecks with XDebug PHP profilingFind WordPress performance bottlenecks with XDebug PHP profiling
Find WordPress performance bottlenecks with XDebug PHP profiling
 
Pagespeed what, why, and how it works
Pagespeed   what, why, and how it worksPagespeed   what, why, and how it works
Pagespeed what, why, and how it works
 
How I learned to stop worrying and love the .htaccess file
How I learned to stop worrying and love the .htaccess fileHow I learned to stop worrying and love the .htaccess file
How I learned to stop worrying and love the .htaccess file
 
EasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on NginxEasyEngine - Command-Line tool to manage WordPress Sites on Nginx
EasyEngine - Command-Line tool to manage WordPress Sites on Nginx
 
Heavy Web Optimization: Frontend
Heavy Web Optimization: FrontendHeavy Web Optimization: Frontend
Heavy Web Optimization: Frontend
 
Optimize wordpress
Optimize wordpressOptimize wordpress
Optimize wordpress
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
 
Optimizing your WordPress website
Optimizing your WordPress websiteOptimizing your WordPress website
Optimizing your WordPress website
 
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
Gestione avanzata di WordPress con WP-CLI - WordCamp Torino 2017 - Andrea Car...
 
How I Learned to Stop Worrying and Backup WordPress
How I Learned to Stop Worrying and Backup WordPressHow I Learned to Stop Worrying and Backup WordPress
How I Learned to Stop Worrying and Backup WordPress
 
SQL Server - CLR integration
SQL Server - CLR integrationSQL Server - CLR integration
SQL Server - CLR integration
 
Low maintenance perl notes
Low maintenance perl notesLow maintenance perl notes
Low maintenance perl notes
 
Automatic testing and quality assurance for WordPress plugins and themes
Automatic testing and quality assurance for WordPress plugins and themesAutomatic testing and quality assurance for WordPress plugins and themes
Automatic testing and quality assurance for WordPress plugins and themes
 
Bigger Stronger Faster
Bigger Stronger FasterBigger Stronger Faster
Bigger Stronger Faster
 
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
[QCon 2011] Por uma web mais rápida: técnicas de otimização de Sites
 

Similar to The 5 most common reasons for a slow WordPress site and how to fix them – extended edition

JS digest. Decemebr 2017
JS digest. Decemebr 2017JS digest. Decemebr 2017
JS digest. Decemebr 2017ElifTech
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax ApplicationsSiarhei Barysiuk
 
Website & Internet + Performance testing
Website & Internet + Performance testingWebsite & Internet + Performance testing
Website & Internet + Performance testingRoman Ananev
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuningVladimír Smitka
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsTaylor Lovett
 
implement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflowimplement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflowWordPress
 
Core Web Vitals Fixer
Core Web Vitals FixerCore Web Vitals Fixer
Core Web Vitals FixerTed Politidis
 
20 tips for website performance
20 tips for website performance20 tips for website performance
20 tips for website performanceAndrew Siemer
 
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersSearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersDistilled
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metricsAnna Migas
 
7 Habits of Exceptional Performance
7 Habits of Exceptional Performance7 Habits of Exceptional Performance
7 Habits of Exceptional PerformanceNicole Sullivan
 
Performance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedPerformance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedVijay Rayapati
 
Introduction to Optimizing WordPress for Website Speed
Introduction to Optimizing WordPress for Website SpeedIntroduction to Optimizing WordPress for Website Speed
Introduction to Optimizing WordPress for Website SpeedNile Flores
 
Make Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedMake Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedAndy Kucharski
 
10 Things You Can Do to Speed Up Your Web App Today
10 Things You Can Do to Speed Up Your Web App Today10 Things You Can Do to Speed Up Your Web App Today
10 Things You Can Do to Speed Up Your Web App TodayChris Love
 
Web Client Performance
Web Client PerformanceWeb Client Performance
Web Client PerformanceHerea Adrian
 
WordPress At Scale. WordCamp Dhaka 2019
WordPress At Scale. WordCamp Dhaka 2019WordPress At Scale. WordCamp Dhaka 2019
WordPress At Scale. WordCamp Dhaka 2019Anam Ahmed
 

Similar to The 5 most common reasons for a slow WordPress site and how to fix them – extended edition (20)

JS digest. Decemebr 2017
JS digest. Decemebr 2017JS digest. Decemebr 2017
JS digest. Decemebr 2017
 
23 Ways To Speed Up WordPress
23 Ways To Speed Up WordPress23 Ways To Speed Up WordPress
23 Ways To Speed Up WordPress
 
High Performance Ajax Applications
High Performance Ajax ApplicationsHigh Performance Ajax Applications
High Performance Ajax Applications
 
Website & Internet + Performance testing
Website & Internet + Performance testingWebsite & Internet + Performance testing
Website & Internet + Performance testing
 
Caching 101
Caching 101Caching 101
Caching 101
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
WordPress performance tuning
WordPress performance tuningWordPress performance tuning
WordPress performance tuning
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications
 
implement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflowimplement lighthouse-ci with your web development workflow
implement lighthouse-ci with your web development workflow
 
Core Web Vitals Fixer
Core Web Vitals FixerCore Web Vitals Fixer
Core Web Vitals Fixer
 
20 tips for website performance
20 tips for website performance20 tips for website performance
20 tips for website performance
 
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital MarketersSearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
SearchLove San Diego 2018 | Mat Clayton | Site Speed for Digital Marketers
 
Demystifying web performance tooling and metrics
Demystifying web performance tooling and metricsDemystifying web performance tooling and metrics
Demystifying web performance tooling and metrics
 
7 Habits of Exceptional Performance
7 Habits of Exceptional Performance7 Habits of Exceptional Performance
7 Habits of Exceptional Performance
 
Performance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For SpeedPerformance Tuning Web Apps - The Need For Speed
Performance Tuning Web Apps - The Need For Speed
 
Introduction to Optimizing WordPress for Website Speed
Introduction to Optimizing WordPress for Website SpeedIntroduction to Optimizing WordPress for Website Speed
Introduction to Optimizing WordPress for Website Speed
 
Make Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speedMake Drupal Run Fast - increase page load speed
Make Drupal Run Fast - increase page load speed
 
10 Things You Can Do to Speed Up Your Web App Today
10 Things You Can Do to Speed Up Your Web App Today10 Things You Can Do to Speed Up Your Web App Today
10 Things You Can Do to Speed Up Your Web App Today
 
Web Client Performance
Web Client PerformanceWeb Client Performance
Web Client Performance
 
WordPress At Scale. WordCamp Dhaka 2019
WordPress At Scale. WordCamp Dhaka 2019WordPress At Scale. WordCamp Dhaka 2019
WordPress At Scale. WordCamp Dhaka 2019
 

More from Otto Kekäläinen

FOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
FOSDEM2021: MariaDB post-release quality assurance in Debian and UbuntuFOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
FOSDEM2021: MariaDB post-release quality assurance in Debian and UbuntuOtto Kekäläinen
 
MariaDB quality assurance in Debian and Ubuntu
MariaDB quality assurance in Debian and UbuntuMariaDB quality assurance in Debian and Ubuntu
MariaDB quality assurance in Debian and UbuntuOtto Kekäläinen
 
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?Otto Kekäläinen
 
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...Otto Kekäläinen
 
DebConf 2019 MariaDB packaging in Debian BoF
DebConf 2019 MariaDB packaging in Debian BoFDebConf 2019 MariaDB packaging in Debian BoF
DebConf 2019 MariaDB packaging in Debian BoFOtto Kekäläinen
 
WordPress-tietoturvan perusteet
WordPress-tietoturvan perusteetWordPress-tietoturvan perusteet
WordPress-tietoturvan perusteetOtto Kekäläinen
 
Technical SEO for WordPress - 2017 edition
Technical SEO for WordPress - 2017 editionTechnical SEO for WordPress - 2017 edition
Technical SEO for WordPress - 2017 editionOtto Kekäläinen
 
Improving WordPress Performance with Xdebug and PHP Profiling
Improving WordPress Performance with Xdebug and PHP ProfilingImproving WordPress Performance with Xdebug and PHP Profiling
Improving WordPress Performance with Xdebug and PHP ProfilingOtto Kekäläinen
 
MariaDB adoption in Linux distributions and development environments
MariaDB adoption in Linux distributions and development environmentsMariaDB adoption in Linux distributions and development environments
MariaDB adoption in Linux distributions and development environmentsOtto Kekäläinen
 
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017Otto Kekäläinen
 
WordPress security 101 - WP Turku Meetup 2.2.2017
WordPress security 101 - WP Turku Meetup 2.2.2017WordPress security 101 - WP Turku Meetup 2.2.2017
WordPress security 101 - WP Turku Meetup 2.2.2017Otto Kekäläinen
 
Testing and updating WordPress - Advanced techniques for avoiding regressions
Testing and updating WordPress - Advanced techniques for avoiding regressionsTesting and updating WordPress - Advanced techniques for avoiding regressions
Testing and updating WordPress - Advanced techniques for avoiding regressionsOtto Kekäläinen
 
MariaDB Developers Meetup 2016 welcome words
MariaDB Developers Meetup 2016 welcome wordsMariaDB Developers Meetup 2016 welcome words
MariaDB Developers Meetup 2016 welcome wordsOtto Kekäläinen
 
MariaDB in Debian and Ubuntu: The next million users
MariaDB in Debian and Ubuntu: The next million usersMariaDB in Debian and Ubuntu: The next million users
MariaDB in Debian and Ubuntu: The next million usersOtto Kekäläinen
 
Koodikerho PEPE Pajapäivä 6.9.2016
Koodikerho PEPE Pajapäivä 6.9.2016Koodikerho PEPE Pajapäivä 6.9.2016
Koodikerho PEPE Pajapäivä 6.9.2016Otto Kekäläinen
 
MariaDB Foundation presentation and membership info
MariaDB Foundation presentation and membership infoMariaDB Foundation presentation and membership info
MariaDB Foundation presentation and membership infoOtto Kekäläinen
 
DebConf16 BoF on MariaDB/MySQL packaging
DebConf16 BoF on MariaDB/MySQL packagingDebConf16 BoF on MariaDB/MySQL packaging
DebConf16 BoF on MariaDB/MySQL packagingOtto Kekäläinen
 
Less passwords, more security: unix socket authentication and other MariaDB h...
Less passwords, more security: unix socket authentication and other MariaDB h...Less passwords, more security: unix socket authentication and other MariaDB h...
Less passwords, more security: unix socket authentication and other MariaDB h...Otto Kekäläinen
 

More from Otto Kekäläinen (20)

FOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
FOSDEM2021: MariaDB post-release quality assurance in Debian and UbuntuFOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
FOSDEM2021: MariaDB post-release quality assurance in Debian and Ubuntu
 
MariaDB quality assurance in Debian and Ubuntu
MariaDB quality assurance in Debian and UbuntuMariaDB quality assurance in Debian and Ubuntu
MariaDB quality assurance in Debian and Ubuntu
 
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
DebConf 2020: What’s New in MariaDB Server 10.5 and Galera 4?
 
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
How MariaDB packaging uses Salsa-CI to ensure smooth upgrades and avoid regre...
 
DebConf 2019 MariaDB packaging in Debian BoF
DebConf 2019 MariaDB packaging in Debian BoFDebConf 2019 MariaDB packaging in Debian BoF
DebConf 2019 MariaDB packaging in Debian BoF
 
Technical SEO for WordPress
Technical SEO for WordPressTechnical SEO for WordPress
Technical SEO for WordPress
 
WordPress-tietoturvan perusteet
WordPress-tietoturvan perusteetWordPress-tietoturvan perusteet
WordPress-tietoturvan perusteet
 
Technical SEO for WordPress - 2017 edition
Technical SEO for WordPress - 2017 editionTechnical SEO for WordPress - 2017 edition
Technical SEO for WordPress - 2017 edition
 
Improving WordPress Performance with Xdebug and PHP Profiling
Improving WordPress Performance with Xdebug and PHP ProfilingImproving WordPress Performance with Xdebug and PHP Profiling
Improving WordPress Performance with Xdebug and PHP Profiling
 
MariaDB adoption in Linux distributions and development environments
MariaDB adoption in Linux distributions and development environmentsMariaDB adoption in Linux distributions and development environments
MariaDB adoption in Linux distributions and development environments
 
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
WordPress security 101 - WP Jyväskylä Meetup 21.3.2017
 
WordPress security 101 - WP Turku Meetup 2.2.2017
WordPress security 101 - WP Turku Meetup 2.2.2017WordPress security 101 - WP Turku Meetup 2.2.2017
WordPress security 101 - WP Turku Meetup 2.2.2017
 
Testing and updating WordPress - Advanced techniques for avoiding regressions
Testing and updating WordPress - Advanced techniques for avoiding regressionsTesting and updating WordPress - Advanced techniques for avoiding regressions
Testing and updating WordPress - Advanced techniques for avoiding regressions
 
Git best practices 2016
Git best practices 2016Git best practices 2016
Git best practices 2016
 
MariaDB Developers Meetup 2016 welcome words
MariaDB Developers Meetup 2016 welcome wordsMariaDB Developers Meetup 2016 welcome words
MariaDB Developers Meetup 2016 welcome words
 
MariaDB in Debian and Ubuntu: The next million users
MariaDB in Debian and Ubuntu: The next million usersMariaDB in Debian and Ubuntu: The next million users
MariaDB in Debian and Ubuntu: The next million users
 
Koodikerho PEPE Pajapäivä 6.9.2016
Koodikerho PEPE Pajapäivä 6.9.2016Koodikerho PEPE Pajapäivä 6.9.2016
Koodikerho PEPE Pajapäivä 6.9.2016
 
MariaDB Foundation presentation and membership info
MariaDB Foundation presentation and membership infoMariaDB Foundation presentation and membership info
MariaDB Foundation presentation and membership info
 
DebConf16 BoF on MariaDB/MySQL packaging
DebConf16 BoF on MariaDB/MySQL packagingDebConf16 BoF on MariaDB/MySQL packaging
DebConf16 BoF on MariaDB/MySQL packaging
 
Less passwords, more security: unix socket authentication and other MariaDB h...
Less passwords, more security: unix socket authentication and other MariaDB h...Less passwords, more security: unix socket authentication and other MariaDB h...
Less passwords, more security: unix socket authentication and other MariaDB h...
 

Recently uploaded

Article writing on excessive use of internet.pptx
Article writing on excessive use of internet.pptxArticle writing on excessive use of internet.pptx
Article writing on excessive use of internet.pptxabhinandnam9997
 
How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?Linksys Velop Login
 
Case study on merger of Vodafone and Idea (VI).pptx
Case study on merger of Vodafone and Idea (VI).pptxCase study on merger of Vodafone and Idea (VI).pptx
Case study on merger of Vodafone and Idea (VI).pptxAnkitscribd
 
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkkaudience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkklolsDocherty
 
Cyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital PresenceCyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital PresencePC Doctors NET
 
Bug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's GuideBug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's GuideVarun Mithran
 
Pvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdfPvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdfPvtaan
 
Premier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdfPremier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdfappinfoedgeca
 
一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理
一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理
一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理aagad
 
The Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case StudyThe Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case StudyDamar Juniarto
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
 
Production 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptxProduction 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptxChloeMeadows1
 
ER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAEER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAEHimani415946
 
Statistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdfStatistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdfOndejSur
 

Recently uploaded (14)

Article writing on excessive use of internet.pptx
Article writing on excessive use of internet.pptxArticle writing on excessive use of internet.pptx
Article writing on excessive use of internet.pptx
 
How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?How Do I Begin the Linksys Velop Setup Process?
How Do I Begin the Linksys Velop Setup Process?
 
Case study on merger of Vodafone and Idea (VI).pptx
Case study on merger of Vodafone and Idea (VI).pptxCase study on merger of Vodafone and Idea (VI).pptx
Case study on merger of Vodafone and Idea (VI).pptx
 
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkkaudience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
audience research (emma) 1.pptxkkkkkkkkkkkkkkkkk
 
Cyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital PresenceCyber Security Services Unveiled: Strategies to Secure Your Digital Presence
Cyber Security Services Unveiled: Strategies to Secure Your Digital Presence
 
Bug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's GuideBug Bounty Blueprint : A Beginner's Guide
Bug Bounty Blueprint : A Beginner's Guide
 
Pvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdfPvtaan Social media marketing proposal.pdf
Pvtaan Social media marketing proposal.pdf
 
Premier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdfPremier Mobile App Development Agency in USA.pdf
Premier Mobile App Development Agency in USA.pdf
 
一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理
一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理
一比一原版UTS毕业证悉尼科技大学毕业证成绩单如何办理
 
The Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case StudyThe Use of AI in Indonesia Election 2024: A Case Study
The Use of AI in Indonesia Election 2024: A Case Study
 
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesMulti-cluster Kubernetes Networking- Patterns, Projects and Guidelines
Multi-cluster Kubernetes Networking- Patterns, Projects and Guidelines
 
Production 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptxProduction 2024 sunderland culture final - Copy.pptx
Production 2024 sunderland culture final - Copy.pptx
 
ER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAEER(Entity Relationship) Diagram for online shopping - TAE
ER(Entity Relationship) Diagram for online shopping - TAE
 
Statistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdfStatistical Analysis of DNS Latencies.pdf
Statistical Analysis of DNS Latencies.pdf
 

The 5 most common reasons for a slow WordPress site and how to fix them – extended edition

  • 1. The 5 most common reasons for a slow WordPress site – and how to fix them Otto Kekäläinen @ottokekalainen WP Meetup October 2019 Edition
  • 2. ● A CEO who codes at Seravo.com ● Written WP themes and plugins, contributed to WordPress Core, MySQL, MariaDB, Debian, Ubuntu, Linux kernel, AppArmor… ● Linux and open source advocate Otto Kekäläinen
  • 3. The 5 most common reasons for a slow WordPress site 1. Unnecessarily large image files 2. Too many HTTP requests and assets loaded in vain 3. Web servers that are slow or lack HTTP/2 4. Caches not working as they should 5. Code fetching too much external data before printing out the WordPress HTML for visitors to see
  • 5. Unnecessarily large image files The pictures from modern mobile phones are huge. A single image from a 8 Mpix camera is easily 3 MB in size and 3840x2160 in dimensions. My laptop: 1920x1080 Iphone X: 2436x1125 On websites any image over 1000px per side is usually waste of space.
  • 6. Unnecessarily large image files Check it yourself: press F12 to open the developer console in a browser. See tab Network and check image files Size and Time.
  • 7. Unnecessarily large image files Another tool: webpagetest.org
  • 8. Unnecessarily large image files Solution: ● Always use one of the image sizes generated by WordPress, never full size. ● Use open source command-line tools like optipng and jpegoptim to optimize your images. ● There are also plugins that send your images for processing on a remote server.
  • 9. Unnecessarily large image files Smart server environments and development tools take care of image optimization automatically. wp-optimize-images No path given as argument. Using default path. Scanning for image files in /data/wordpress/htdocs/wp-content/uploads/ Found 9 images in total and 6 new images. ... ---> Optimizing otto-normal-full-size-1568x2788.jpg ... File size reduction: 360K --> 324K Optimized image by: 10.3697 % ---> Optimizing otto-normal-full-size-169x300.jpg ... File size reduction: 16K --> 16K Optimized image by: 7.47187 % ---> Optimizing otto-normal-full-size.jpg ... File size reduction: 868K --> 464K Optimized image by: 46.6131 % Optimized 6 images for a total of 463KiB saved!
  • 10. Unnecessarily large image files Remember to validate after changes!
  • 11. 2. Too many HTTP requests and assets loaded in vain
  • 12. Too many HTTP requests and assets loaded in vain With the same web developer console or webpagetest.org tool you can see how many HTTP requests were made and the total size of download: Solution: ● Uninstall unnecessary plugins ● If you see a contact form plugin load on every page, report that as a bug to the plugin author. It should load it’s assets only on the page where the contact form actually is on.
  • 13. If you see this in webpagetest.org results then you know the bandwidth of the visitor is saturated: Since you can’t increase the visitors’ bandwidth, you must slim down your site contents. Front page should below 100 HTTP requests and 1000 kb, but 30 req and 300 kb is often doable with some smart design. Too many HTTP requests and assets loaded in vain
  • 14. Don’t try to solve performance issues by installing more plugins!
  • 15. Since WordPress 5.2 the core now has the Site Health page that also recommends uninstalling all unused plugins and themes, which is always a good practice! Too many HTTP requests and assets loaded in vain
  • 16. Too many HTTP requests and assets loaded in vain What about minification and concatenation = combining many .js and .css files into one? Ensure your site is server with HTTP/2 which has similar features built into the protocol. With modern browsers and HTTP/2 the benefits of minification and concatenation is marginal. Use your developer time on something else!
  • 17. Extra tip: native lazy loading images ● Latest Chrome supports new <img> attribute loading=”lazy” that postpones downloading the image until visitor scrolls down to it. ● For WordPress 5.x sites: wp plugin install --activate native-lazyload ● Read more at wordpress.org/plugins/native-lazyload/
  • 18. 3. Web servers that are slow or lack HTTP/2
  • 19. The front page of a fresh WordPress installation should load in under 300 ms when tested on webpagetest.org. Click on the request to see details, and check for HTTP/2. Web servers that are slow or lack HTTP/2
  • 20. For developers: learn how to use the command-line tool curl: ● Tests WordPress specifically = HTML output of a site ● Shows headers as well. ● Does not cache, all redirects et al are always really from the server and not your browser’s memory. Web servers that are slow or lack HTTP/2 curl -Ls https://example.com/article/ -o /dev/null -w '%{http_code} %{time_total}n' 200 0,341418 curl -ILs -H Pragma:no-cache seravo.com HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 23 May 2019 14:32:51 GMT Content-Type: text/html Content-Length: 178 Connection: keep-alive Location: https://seravo.com/
  • 21. Web servers that are slow or lack HTTP/2 You get what you pay for with hosting that costs only 2,95€ per month. Don’t try to save 20 euros in the wrong place, it won’t be worth it once you get trouble! A good hosting solution will not only be much faster than average, but also usually include better technology (HTTP/2, Redis caching, gzip compression) and some companies even offer upkeep that covers monitoring, updates, security and much more.
  • 22. 4. Caches not working as they should
  • 23. Caches not working as they should Unfortunately the quality of many WordPress plugins and themes are low, and they do things that bust the cache: ● emit cache denying headers ● set cookies for all visitors HTTP caching is very important, since when it works, the HTML from WordPress/PHP does not need to be fetched at all and everything is much faster from the server. HTTP caching also happens in the browser and what is fetched from browser memory is very quickly shown to the visitor!
  • 24. Caches not working as they should While webpagetest.org also shows cache headers and statuses, using curl is invaluable since you can make changes on the server validate it in an instant: Look for headers like: ● cache-control ● expires ● age ● set-cookie Good read: https://developer.mozilla.org/e n-US/docs/Web/HTTP/Caching curl -ILs https://example.com/ HTTP/2 200 content-type: text/html; charset=UTF-8 vary: Accept-Encoding expires: Wed, 11 Jan 1984 05:00:00 GMT cache-control: no-cache, must-revalidate, max-age=0
  • 25. Caches not working as they should Cookies imply that there is a session and that the HTML page contents is individually tailored, thus no caching. Cookies should not be used for language selection or for storing cookie consent info (sic!). The old PHPSESSION cookies should not be in use anywhere anymore! On a WooCommerce site cookies might make sense, since the page might have a shopping cart or a “Hello <name>” section that is supposed to be shown to this only one user.
  • 26. Extra tip: test HTTP cache ● For Seravo’s customers: wp-check-http-cache
  • 27. Caches not working as they should Remember, caching is also good for the environment! (Prevents excess CPU cycles from happening.)
  • 28. 5. Code is doing too much
  • 29. Code is doing too much Typically developers don’t test their plugins with large amounts of data and they work well on small sites. As sites grow, all problems related to excess data manipulation become visible. External API calls in PHP typically also block the entire site from loading if the external API is down. Solution: ● Inject more data on a test site and see how it behaves ● In code, don’t always fetch everything from the database. Remember “LIMIT N” in SQL, OK? ● Design code to do only what is needed for the view, nothing else.
  • 30. Code is doing too much Finding the code bottlenecks is hard without proper tools. Solution: ● Code profiling ● XDebug on test sites ● Tideways on production sites
  • 31. Code is doing too much XDebug + Webgrind More at: https://seravo.com/docs/development/xdebug/
  • 32. Code is doing too much Tideways.com More at: https://seravo.com/docs/development/tideways/
  • 33. Code is doing too much The database is often the performance bottleneck. See my other talk on WordPress and database optimization: More in-depth code profiling tips in my WordPress performance talk: wordpress.tv/?s=otto+kekäläinen
  • 34. Extra tip: test with network block ● For Seravo’s customers: wp-check-remote-failure
  • 35. Thank you! For more tips read blogs at seravo.com (in English) or wp-palvelu.fi (suomeksi) or sign up at seravo.com/newsletter-for-wordpress-developers/
  • 36. Premium hosting and upkeep for WordPress HTTP/2 TESTED UPDATES 24/7 UPKEEP
  • 37. 0. Who is Otto and what is Seravo a. Follow on Twitter to get slides 1. Too big image file sizes a. Typical with modern mobile phones and on blogs b. See it yourself in the developer console, page size should be <1MB c. How to use webpagetest.org to measure it d. Optimize images with open source tools yourself or install a plugin - Seravo has wp-optimize-images 2. Too many HTTP requests and assets loaded in vain a. Look at web developer console how many requests are made on every page b. Remove excess cruft, remove unnecessary plugins. WP 5.2 health check helps! c. Don’t try to solve speed issues by installing more plugins! d. Forget minification and concatenation - ensure you have HTTP/2 instead 3. Slow web server, cheap hosting, lack of HTTP/2 a. Fast web server - WP out of the box should load in 200 ms b. How to use curl to measure it c. Browser developer console d. Hosting should cost closer 30-50 euros per month e. Good hosting takes automatically care of many server side things, like HTTP caching, Redis based object caching, HTTP/2, gzip compression etc 4. Cache busted a. How to use curl to see cache headers b. Avoid cookies set in vain i. WooCommerce OK ii. Cookie consent or WPML is not OK use case for cookies 5. Code is doing too much a. XDebug b. Tideways c. Database size often the culprit, see my other talk d. See my WC Europe talk. See you this year as well? 6. Software Architect tips a. Blocking JavaScript b. AMP - don’t do it c. Progressive web applications - the future