speeding up your wordpress site - wordcamp hamilton 2015

24
Speed up your WordPress site Alan Lok - WirelessLinx Inc.

Upload: alan-lok

Post on 06-Aug-2015

166 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Speeding up your WordPress site - WordCamp Hamilton 2015

Speed up your WordPress siteAlan Lok - WirelessLinx Inc.

Page 2: Speeding up your WordPress site - WordCamp Hamilton 2015

Motivations

User experience1

Search engine optimization2

Your wallet

Less on-call issues!

1: http://www.webperformancetoday.com/2012/02/28/4-awesome-slides-showing-how-page-speed-correlates-to-business-metrics-at-walmart-com/ 2: http://googlewebmastercentral.blogspot.ca/2010/04/using-site-speed-in-web-search-ranking.html

Page 3: Speeding up your WordPress site - WordCamp Hamilton 2015

What is a LAMP stack

Database PHP Engine

Your app

Operating System

Web Server

Performance gains can be found in each layer

Reverse Proxy

Cache

Page 4: Speeding up your WordPress site - WordCamp Hamilton 2015

Internal Tune-upsDigging into your WordPress site to make it better

Page 5: Speeding up your WordPress site - WordCamp Hamilton 2015

The simple stuff

Update your plugins

Remove unused themes and plugins

404 errors

Page 6: Speeding up your WordPress site - WordCamp Hamilton 2015

WordPress plugins to speed things up

W3 Total Cache

Super Cache

Zen Cache

Page 7: Speeding up your WordPress site - WordCamp Hamilton 2015

Different caches in WordPress coreObject Cache

wp_cache_get/wp_cache_set/wp_cache_delete

Backing onto a object cache library (memcached, Redis, APCu…)

Transcient Data

set_transient/get_transient/delete_transient

Saving data into database that is available to all instances

Both stores have a concept of timeout and developer-managed hit/miss management

Page 8: Speeding up your WordPress site - WordCamp Hamilton 2015

Object Cache - Efficiency vs Coherency

Efficiency:

reduce number of calls to your cache (or do a multi-get/set)

avoid remote cache if possible

Coherency

clustered cache allows for easier cache invalidation

Understand how cache works - cache makes debugging harder

Page 9: Speeding up your WordPress site - WordCamp Hamilton 2015

Reduce and increase reuseLower number of HTTP requests

Combine CSS/JS files or inline them

Data URI

CSS sprites

Lower size of response

HTML/JS/CSS minification

Image optimization (eg. ImageOptim)

Reuse JS and CSS file for whole site where possible

Personalization with AJAX

Page 10: Speeding up your WordPress site - WordCamp Hamilton 2015

Profile your applicationAnalyze your application with a PHP profiler such as BlackFire or xdebug/cachegrind

Look for high number of apply_filters, mysql calls, and wp_cache_get

Page 11: Speeding up your WordPress site - WordCamp Hamilton 2015

Profile your DOMMake your page render faster too

Page 12: Speeding up your WordPress site - WordCamp Hamilton 2015

Database

Check your slow query log

Modify my.cnf to add general-log and start seeing all database queries per page

Reduce plugins or modify code if possible to reduce queries

Try to “explain” your query

Page 13: Speeding up your WordPress site - WordCamp Hamilton 2015

PSA: Signs of hacking

Check integrity of site and your VPS with tools such as wp-cli, or findbot.pl

Profiler showing high number of file operations

Seeing pharma or other links injected in header/footer

Page 14: Speeding up your WordPress site - WordCamp Hamilton 2015

Operational ImprovementsImprovements you can make outside WordPress

Page 15: Speeding up your WordPress site - WordCamp Hamilton 2015

Make it faster by paying more money!There is no such thing as “unlimited” hosting or space

Ensure you are paying for the level of performance you expect given the traffic estimates

Diminishing returns on performance when buying more resources

Page 16: Speeding up your WordPress site - WordCamp Hamilton 2015

DatabaseMySQL versions and variations (MariaDB, Percona, Community)

DB Engine: Convert tables from MyISAM to InnoDB

Some* my.cnf tuning

InnoDB buffer size, Query Caching

HyperDB for database splitting*

Some performance references: http://www.liquidweb.com/kb/mysql-5-1-vs-5-5-vs-5-6-performance-comparison/ https://www.percona.com/blog/2011/10/10/mysql-versions-shootout/ http://vbtechsupport.com/657/

Page 17: Speeding up your WordPress site - WordCamp Hamilton 2015

Web Server TechnologyWeb server technologies:

nginx vs Apache

PHP process management in Apache

php-fpm vs mod_php

prefork, vs worker/event

mod_pagespeed, php-opcache

When does it matter?More food for thought: http://blog.bitnami.com/2014/06/performance-enhacements-for-apache-and.html https://www.digitalocean.com/community/tutorials/apache-vs-nginx-practical-considerations

Credit: Digital Ocean

Page 18: Speeding up your WordPress site - WordCamp Hamilton 2015

HTTP changes

Content compression

Expiry headers for content type

Cache directive

Page 19: Speeding up your WordPress site - WordCamp Hamilton 2015

Content DeliveryReducing number of access to your web server will reduce your costs (bandwidth and CPU needs)

Consider using public CDN for shared JS/CSS

Pay for a cheap CDN and use a plugin to rewrite your assets to the CDN

Page 20: Speeding up your WordPress site - WordCamp Hamilton 2015

Web Application Protection*

SaaS: Sucuri / CloudFlare

Plugins: WordFence / Better WP Security

Spam Protection: Akismet

PHP: suhosin

Server: mod_security

*not an exhaustive list or endorsement

Page 21: Speeding up your WordPress site - WordCamp Hamilton 2015

Push vs Pull CDN

Push CDN

Pull CDN

CDN Data Store CDN Cache

Your Webserver (origin)

cache misscontent push

Page 22: Speeding up your WordPress site - WordCamp Hamilton 2015

Monitor your site

Application Performance Monitor (eg. New Relic)

Server Monitoring (eg. LongView, CloudWatch)

Last mile / Page Health (eg. Kingdom)

Page 23: Speeding up your WordPress site - WordCamp Hamilton 2015

Site AuditsLet’s look at a few sites together

Page 24: Speeding up your WordPress site - WordCamp Hamilton 2015

Thanks!Twitter: @alan_lok Web: http://wlx.ca