69
26/08/2009 PHPBenelux meeting Welkom!

Website Performance: server- and clientside techniques

Embed Size (px)

DESCRIPTION

A talk on how to increase your website performance. Both server- and clientside techniques get attention

Citation preview

Page 1: Website Performance: server- and clientside techniques

26/08/2009

PHPBenelux meeting

Welkom!

Page 2: Website Performance: server- and clientside techniques

Website Performance

Back- and frontend techniques

Page 3: Website Performance: server- and clientside techniques

Who am I?

Page 4: Website Performance: server- and clientside techniques

Who are you?

Page 5: Website Performance: server- and clientside techniques
Page 6: Website Performance: server- and clientside techniques

What is this talk about?

Disclaimer: I’m no expert and still learning every day, most of my knowledge is theoretically so please correct me!

Page 7: Website Performance: server- and clientside techniques

Pukkelpop.be

Page 8: Website Performance: server- and clientside techniques

Serverside & Clientside Both deserve attention

Page 9: Website Performance: server- and clientside techniques

Scaling, Database, Caching, Coding, …

Serverside

Page 10: Website Performance: server- and clientside techniques

Scaling A property of a system which indicates its

ability to handle growing amounts of work in a

graceful manner

Page 11: Website Performance: server- and clientside techniques

Scaling

Vertically Horizontally

Page 12: Website Performance: server- and clientside techniques

Scaling Vertically Add more resources to a single computer

Page 13: Website Performance: server- and clientside techniques

Scaling Horizontally Add more nodes to a distributed system

Page 14: Website Performance: server- and clientside techniques

Scaling, the Google way

Page 15: Website Performance: server- and clientside techniques

"Nobody builds servers as unreliably as we do" Urs Hölzle, senior vice president for operations at Google

Page 16: Website Performance: server- and clientside techniques

Database Database optimization, Query optimization,

Indexes

www.xkcd.com

Page 17: Website Performance: server- and clientside techniques

Database optimization

Page 18: Website Performance: server- and clientside techniques

Query optimization

Page 19: Website Performance: server- and clientside techniques

Indexes

Page 20: Website Performance: server- and clientside techniques

A couple of tips

More at http://forge.mysql.com/wiki/Top10SQLPerformanceTips

Page 21: Website Performance: server- and clientside techniques

Scaling databases

Master / Slave setup Sharding

Master (write)

Slave (read) Slave (read) Even userId’s Uneven userId’s

Master

Page 22: Website Performance: server- and clientside techniques

Scaling databases

Master / Slave setup Sharding

Page 23: Website Performance: server- and clientside techniques

Master / Slave setup

Page 24: Website Performance: server- and clientside techniques

Sharding code example

Page 25: Website Performance: server- and clientside techniques

Caching A collection of data duplicating original

values stored elsewhere or computed earlier,

where the original data is expensive to fetch

www.xkcd.com

Page 26: Website Performance: server- and clientside techniques

Basics of caching

DATA REQUEST

CACHED AND FRESH?

FETCH FROM CACHE FETCH FROM DATABASE

SAVE IN CACHE

RETURN DATA

YES NO

Page 27: Website Performance: server- and clientside techniques

Basics of caching: example

Page 28: Website Performance: server- and clientside techniques

Three methods of caching

TTL Invalidation Updating

Page 29: Website Performance: server- and clientside techniques

Caching: TTL

Page 30: Website Performance: server- and clientside techniques

Caching: Invalidation

Page 31: Website Performance: server- and clientside techniques

Caching: Updating

Page 32: Website Performance: server- and clientside techniques

Caching types

Page 33: Website Performance: server- and clientside techniques

Intermediate Cache

Internet

webserver cache server

Page 34: Website Performance: server- and clientside techniques

Caching software, …

Page 35: Website Performance: server- and clientside techniques

Memcached

Page 36: Website Performance: server- and clientside techniques

Memcached: what?

Page 37: Website Performance: server- and clientside techniques

Memcached: Who?

Page 38: Website Performance: server- and clientside techniques

Memcached: Some figures

Netlog Wikipedia Facebook

http://www.slideshare.net/folke/netlog-what-we-learned-about-scalability-high-availability-430211 http://meta.wikimedia.org/wiki/Wikimedia_servers#Server_list http://www.facebook.com/note.php?note_id=39391378919

Page 39: Website Performance: server- and clientside techniques

Best practices for frontend engineers, …

Clientside

Page 40: Website Performance: server- and clientside techniques

Source: http://www.websiteoptimization.com/speed/tweak/average-web-page/

Why optimize clientside?

Page 41: Website Performance: server- and clientside techniques

The 80/20 Rule

Page 42: Website Performance: server- and clientside techniques

0.295s

Page 43: Website Performance: server- and clientside techniques

Parallel downloads

Page 44: Website Performance: server- and clientside techniques

Parallel downloads

Page 45: Website Performance: server- and clientside techniques

Best Practices

Page 46: Website Performance: server- and clientside techniques

1. Make fewer HTTP requests

Page 47: Website Performance: server- and clientside techniques

1. Make fewer HTTP requests

CSS Sprites

#nav li a {background-image:url('../img/image_nav.gif')} #nav li a.item1 {background-position:0px -140px}

Page 48: Website Performance: server- and clientside techniques

1. Make fewer HTTP requests

Inline images

Page 49: Website Performance: server- and clientside techniques

1. Make fewer HTTP requests

Combine CSS/JS

Page 50: Website Performance: server- and clientside techniques

2. Use a CDN

Page 51: Website Performance: server- and clientside techniques

3. Gzip components

Page 52: Website Performance: server- and clientside techniques

3. Gzip components

Page 53: Website Performance: server- and clientside techniques

4. Move CSS to the top

Page 54: Website Performance: server- and clientside techniques

4. Move JS to the bottom

Page 55: Website Performance: server- and clientside techniques

5. Minify JS and CSS

Page 56: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

Page 57: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

ETags Expires Headers

Page 58: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

First send the cache related headers

Page 59: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

Then generate an Etag and check the request

Page 60: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

Check the modified since request header

Page 61: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

And finally output the image if no cache match

Page 62: Website Performance: server- and clientside techniques

6. Make dynamic images cacheable

Page 63: Website Performance: server- and clientside techniques

7. Optimize images

Page 64: Website Performance: server- and clientside techniques

7. Anticipate updates

Page 65: Website Performance: server- and clientside techniques

Tools Usefull tools for optimization

Page 66: Website Performance: server- and clientside techniques

Standalone

Page 67: Website Performance: server- and clientside techniques

Firefox plugins

Page 68: Website Performance: server- and clientside techniques
Page 69: Website Performance: server- and clientside techniques