Cache all the things #DCLondon

29
Cache All The Things Mike Bell - @mikebell_

description

Cut down presentation for DrupalCamp London 2013

Transcript of Cache all the things #DCLondon

Page 1: Cache all the things #DCLondon

Cache All The Things

Mike Bell - @mikebell_

Page 2: Cache all the things #DCLondon

About Me

Mike BellLead Drupal Developer @ Ixis

@mikebell_http://drupal.org/user/189605

Page 3: Cache all the things #DCLondon

Exactly what things?

well errr...

everything!

Page 4: Cache all the things #DCLondon

No really...

Frontend:- HTML- CSS- Images- Javascript

Backend:- PHP- MySQL

So pretty much everything then!

Page 5: Cache all the things #DCLondon

Where to start?

Ask yourself:Why is my site slow?

a) Bad codeb) Bad serverc) It's not!

Page 6: Cache all the things #DCLondon

Bad Code?

Stop.

Caching will help... but it won't solve your bigger issues.

There are tools to help - xhprof

Page 7: Cache all the things #DCLondon

Bad Server?

So how's £5.99 a month working out for you?

Caching will help... but again you still have bigger issues.

Scale horizontally/vertically for a quick fix then work on additional caching.

Page 8: Cache all the things #DCLondon

It's not!

I like you!

Caching is always a good thing, except when you have to debug it...

Page 9: Cache all the things #DCLondon

Caching in Drupal

- Code Level (cache_get/cache_set)- APC (not covered here)- Resource caching (this get's tricky!)- DB Layer- CDNs (related to resource caching)

Page 10: Cache all the things #DCLondon

Code Level

Drupal has it's own caching api.

Module Developers use it!

cache_set - store data in Drupals cache tablecache_get - get data from Drupals cache table

You can even define your own cache tables!

Page 11: Cache all the things #DCLondon

Resource Caching

Many different types of resources

Each can be cached by different tools

Example:- Drupals CSS/JS Cache- Drupals Page Cache- Boost- Varnish

Page 12: Cache all the things #DCLondon

Resource Caching

Drupal default: CSS/JS and Page

(taken from mikebell.io - ooppss!)

Page 13: Cache all the things #DCLondon

Resource Caching - Boost

Boost - http://drupal.org/project/boost

Static caching for all Drupal Assets

Anonymous users only

Ideal for shared hosting environments

Potentially the easiest to setup

Page 14: Cache all the things #DCLondon

Resource Caching - Varnish

Application Accelerator

Linux Only

Caches resources based on initial view

Anonymous only - very picky with sessions and cookies

Insanely Powerful

Page 15: Cache all the things #DCLondon

Resource Caching - Varnish

Advanced setup - requires additional module and VCL for Drupal- http://drupal.org/project/varnish

Granular ttls (time to live)

Specific resource (image/css) and page element! All available through VCL config.

Page 16: Cache all the things #DCLondon

Resource Caching - Varnish

Cache Stores- RAM- Disk

Ram - super fast - requires a lot of ramDisk - fast - disk space is rarely an issue

Page 17: Cache all the things #DCLondon

Data Caching - memcached

Data and Database caching layer

Caches cache... (and things!)

Page 18: Cache all the things #DCLondon

Data Caching - memcachedExample:Core cache - core cache tables (cache_*)

Moved into memcached and shared between multiple instances across multiple servers

Simple api makes getting and setting easy

Drupal requires - http://drupal.org/project/memcache and pecl extension

Page 19: Cache all the things #DCLondon

3rd Party Caching - Akamai

One of the biggest caching providers

A high chance you've experienced Akamai today without realising it.

Static cache of resourcesContent Distribution Network100+ Edge servers all over the world

Page 20: Cache all the things #DCLondon

3rd Party Caching - Akamai

Coverage for DDOS attacks- Active monitoring and defense

Advanced redirection rules through control panel

It's not cheap!

It's also pretty magical.

Page 21: Cache all the things #DCLondon

3rd Party Caching - Cloudflare

Similar to Akamai

Smaller scale

Emphasis on security and DDOS protection

Page 22: Cache all the things #DCLondon

Content Distribution Network

CDNs for short

Offload resource handling to external provider- Images- Video- Audio- Large files

Syndicate content around the world

Page 23: Cache all the things #DCLondon

Content Distribution Network

Why use a CDN?- Content is delivered quicker-- Latency cut down

Pricing is granular - pay as you go type deal

Amazon + Rackspace Cloud Files

Page 24: Cache all the things #DCLondon

How does it all fit together?

Page 25: Cache all the things #DCLondon

What happens when it all goes wrong?

Page 26: Cache all the things #DCLondon

Caching to the rescue!

Each layer provides protection

3rd Party - shield 99% of anon trafficVarnish - the rest

Anonymous users should never know your site has issues.

Page 27: Cache all the things #DCLondon

Debugging Tips

Configure different urls for different platforms- Easier to identify what cache layer has an issue

Don't be afraid to flush caches- Your backend should be able to cope with it

Analyse headers! Drupal and Varnish provide a lot of info

Akamai information can be gleaned from additional http headers.

Page 28: Cache all the things #DCLondon

Debugging Tips

Monitor each layer- Icinga- Pingdom

Page 29: Cache all the things #DCLondon

Any Questions?

Slide designs by Ritch Partridge (@ritchpartridge)