Maak Je Site Sneller!

105
MAAK JE SITE SNELLER!

Transcript of Maak Je Site Sneller!

Page 1: Maak Je Site Sneller!

MAAK JE SITESNELLER!

Page 2: Maak Je Site Sneller!

Wie ben ik?

2

Page 3: Maak Je Site Sneller!

3

Denis Defreyne

Page 4: Maak Je Site Sneller!

4

stoneship.org

Page 6: Maak Je Site Sneller!

6

@ddfreyne

Page 7: Maak Je Site Sneller!

7

del.icio.us/ddfreyne

Page 8: Maak Je Site Sneller!

8

facebook.com/denisdefreyne

Page 9: Maak Je Site Sneller!

9

netlog.com/ddfreyne

Page 10: Maak Je Site Sneller!

10

flickr.com/photos/denisdefreyne

Page 11: Maak Je Site Sneller!

11

github.com/ddfreyne

Page 12: Maak Je Site Sneller!

12

bitbucket.org/ddfreyne

Page 13: Maak Je Site Sneller!

13

last.fm/user/amonre

Page 14: Maak Je Site Sneller!

Maar waaromzou ik mijn sitesneller maken?

14

Page 15: Maak Je Site Sneller!

15

Page 16: Maak Je Site Sneller!

“It’s sort of fair to say thatif you’re a fast site,

maybe you should geta little bit of a bonus.”

— Matt Cutts, Google16

Page 17: Maak Je Site Sneller!

Client Side #1Verklein JavaScript en CSS

Page 18: Maak Je Site Sneller!

Voorbeeld: CSS

18

Page 19: Maak Je Site Sneller!

Gooi overbodige witruimte,overbodige interpunctie

en overbodige tekens weg

19

Page 20: Maak Je Site Sneller!

body{

background-­‐color:  #ffccee;}

20

Page 21: Maak Je Site Sneller!

body{background:#fce}

21

Page 22: Maak Je Site Sneller!

body{

background-­‐color:  #ffccee;}

22

Page 23: Maak Je Site Sneller!

body{

background-­‐color:  #ffccee;}

23

Page 24: Maak Je Site Sneller!

Gooi overbodige regels weg

24

Page 25: Maak Je Site Sneller!

Combineer regels

25

Page 26: Maak Je Site Sneller!

body{    background-­‐color:  #ffccee;    background-­‐image:  url(blah.png);    background-­‐attachment:  fixed;    background-­‐position:  top  left;}

26

Page 27: Maak Je Site Sneller!

body{    background:  #fce  url(moo.png)  fixed  top  left;}

27

Page 28: Maak Je Site Sneller!

28

*{margin:0;padding:0}body{text-­‐align:center;background:#000}#wrapper{width:960px;margin:10px  auto;text-­‐align:left}#lang-­‐picker{text-­‐align:right}#lang-­‐picker  ul{width:960px;margin:10px  auto}#lang-­‐picker  ul  li{display:inline;margin:0  0  0  10px}#lang-­‐picker  a,#lang-­‐picker  span{font-­‐family:Helvetica,Arial,sans-­‐serif;font-­‐size:10px;padding:10px  0;letter-­‐spacing:1px;text-­‐decoration:none;text-­‐transform:uppercase}#lang-­‐picker  span{color:#fff}#lang-­‐picker  a:link,#lang-­‐picker  a:visited{color:#666}#lang-­‐picker  a:hover{color:#999}#lang-­‐picker  a:active{color:#fff}#header{background:#6a3506  url(/assets/images/header/header-­‐v2.jpg)  no-­‐repeat;position:relative;width:960px;height:126px}#header  #link-­‐home  span{display:none}#header  #link-­‐home  a,#header  #link-­‐home  div.hover{position:absolute;top:0;left:320px;width:313px;height:126px;background:url(/assets/images/header/header-­‐v2.jpg)  -­‐320px  0}#header  #link-­‐home  a:hover,#header  #link-­‐home  div.hover{background-­‐position:-­‐320px  -­‐126px}#header  #link-­‐home  a{z-­‐index:100}#header  #link-­‐home  div{z-­‐index:50}#nav{position:relative;height:69px;background:#43290D}body.mystonline-­‐com-­‐en  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐en.jpg)}body.mystonline-­‐com-­‐de  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐de.jpg)}body.mystonline-­‐com-­‐es  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐es.jpg)}body.mystonline-­‐com-­‐fi  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐fi.jpg)}body.mystonline-­‐com-­‐fr  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐fr.jpg)}body.mystonline-­‐com-­‐it  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐it.jpg)}body.mystonline-­‐com-­‐nl  #nav{background:#43290D  url(/assets/images/header/nav-­‐v2-­‐nl.jpg)}#nav  li,#nav  li  a,#nav  li  div.hover{display:block;position:absolute;top:0;left:0;width:160px;height:69px}#nav  li  a{z-­‐index:100}#nav  li  div{z-­‐index:50}#nav  li  a  span{display:none}#nav  li#nav-­‐home{top:0;left:0}#nav  li#nav-­‐play{top:0;left:160px}#nav  li#nav-­‐about{top:0;left:320px}#nav  li#nav-­‐forums{top:0;left:480px}#nav  li#nav-­‐media{top:0;left:640px}#nav  li#nav-­‐developers{top:0;left:800px}body.mystonline-­‐com-­‐en  #nav  li  a,body.mystonline-­‐com-­‐en  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐en.jpg)}body.mystonline-­‐com-­‐de  #nav  li  a,body.mystonline-­‐com-­‐de  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐de.jpg)}body.mystonline-­‐com-­‐es  #nav  li  a,body.mystonline-­‐com-­‐es  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐es.jpg)}body.mystonline-­‐com-­‐fi  #nav  li  a,body.mystonline-­‐com-­‐fi  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐fi.jpg)}body.mystonline-­‐com-­‐fr  #nav  li  a,body.mystonline-­‐com-­‐fr  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐fr.jpg)}body.mystonline-­‐com-­‐it  #nav  li  a,body.mystonline-­‐com-­‐it  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐it.jpg)}body.mystonline-­‐com-­‐nl  #nav  li  a,body.mystonline-­‐com-­‐nl  #nav  li  div.hover{background:url(/assets/images/header/nav-­‐v2-­‐nl.jpg)}#nav  li#nav-­‐home  a{background-­‐position:0  0}#nav  li#nav-­‐play  a{background-­‐position:-­‐160px  0}#nav  li#nav-­‐about  a{background-­‐position:-­‐320px  0}#nav  li#nav-­‐forums  a{background-­‐position:-­‐480px  0}#nav  li#nav-­‐media  a{background-­‐position:-­‐640px  0}#nav  li#nav-­‐developers  a{background-­‐position:-­‐800px  0}#nav  li#nav-­‐home  a:hover,#nav  li#nav-­‐home  div.hover{background-­‐position:0  -­‐69px}#nav  li#nav-­‐play  a:hover,#nav  li#nav-­‐play  div.hover{background-­‐position:-­‐160px  -­‐69px}#nav  li#nav-­‐about  a:hover,#nav  li#nav-­‐about  div.hover{background-­‐position:-­‐320px  -­‐69px}#nav  li#nav-­‐forums  a:hover,#nav  li#nav-­‐forums  div.hover{background-­‐

Page 29: Maak Je Site Sneller!

Voorbeeld: JavaScript

29

Page 30: Maak Je Site Sneller!

Gooi overbodige witruimte weg

30

Page 31: Maak Je Site Sneller!

window.onLoad  =  function()  {        alert("moo");}

31

Page 32: Maak Je Site Sneller!

window.onLoad=function(){alert("moo")}

32

Page 33: Maak Je Site Sneller!

Nuttig?

33

Page 34: Maak Je Site Sneller!

Voorbeeld: semver.org

34

Page 35: Maak Je Site Sneller!

Voorbeeld: semver.org

Verkleinen van CSS:20.499 bytes → 886 bytes

19.613 bytes uitgespaard95,7% nutteloze data

(http://github.com/mojombo/semver.org/issues/closed/#issue/7) 35

Page 36: Maak Je Site Sneller!

Client Side #2Combineer afbeeldingen

in “CSS Sprites”

Page 37: Maak Je Site Sneller!

Voorbeeldjes

37

Page 38: Maak Je Site Sneller!

38

Page 39: Maak Je Site Sneller!

39

Page 40: Maak Je Site Sneller!

40

Page 41: Maak Je Site Sneller!

Maar waarom?

41

Page 42: Maak Je Site Sneller!

1 HTTP requestvs.

10, 20, … HTTP-requests

42

Page 43: Maak Je Site Sneller!

Efficiëntere compressie

43

Page 44: Maak Je Site Sneller!

Meer weten?

44

Page 45: Maak Je Site Sneller!

45

spriteme.orgalistapart.com/articles/sprites

Page 46: Maak Je Site Sneller!

Client Side #3Gooi JavaScript achteraan

Page 47: Maak Je Site Sneller!

47

<!DOCTYPE  HTML><html  lang="en">    <head>        …        <script  type="text/javascript"  src="…">    </head>    <body>        …

   </body></html>

Page 48: Maak Je Site Sneller!

48

<!DOCTYPE  HTML><html  lang="en">    <head>        …

   </head>    <body>        …        <script  type="text/javascript"  src="…">    </body></html>

Page 49: Maak Je Site Sneller!

<script async="async">(HTML5)

49

Page 50: Maak Je Site Sneller!

Client Side #4Pre-load data

Page 51: Maak Je Site Sneller!

new  Image().src  =    'http://example.com/images/kitten.jpg';

51

Page 52: Maak Je Site Sneller!

Client Side #5Verklein afbeeldingen

Page 53: Maak Je Site Sneller!

53

CSS Sprites (zie #1)

Page 54: Maak Je Site Sneller!

54

Afbeeldingsformaten

Page 55: Maak Je Site Sneller!

55

PNG? GIF? BMP?JPEG 2000? TIFF?

JPEG? WTF?

Page 56: Maak Je Site Sneller!

56

PNG: ✓

goed voor illustraties

Page 57: Maak Je Site Sneller!

57

GIF: ✓

goed voor illustratiesmaar liever PNG

Page 58: Maak Je Site Sneller!

58

JPEG: ✓

goed voor foto’s

Page 59: Maak Je Site Sneller!

59

BMP, TIFF: ✗

lossless en slecht of zelfsniet gecomprimeerd!

Page 60: Maak Je Site Sneller!

60

De rest: ✗

meestal gewoon slechteof geen ondersteuning

Page 61: Maak Je Site Sneller!

61

Crop afbeeldingen

Page 62: Maak Je Site Sneller!

62

Crush afbeeldingen

Page 63: Maak Je Site Sneller!

63

pngcrush, optipng, …

Page 64: Maak Je Site Sneller!

64

developer.yahoo.com/yslow/smushit

Page 65: Maak Je Site Sneller!

Client Side #6Minimaliseer het

aantal HTTP-requests

Page 66: Maak Je Site Sneller!

Browser Server

66

Page 67: Maak Je Site Sneller!

Browser Server

67

Page 68: Maak Je Site Sneller!

Browser Server

68

Page 69: Maak Je Site Sneller!

Browser Server

69

Page 70: Maak Je Site Sneller!

Browser Server

70

Page 71: Maak Je Site Sneller!

Browser Server

71

Page 72: Maak Je Site Sneller!

Browser Server

72

Page 73: Maak Je Site Sneller!

Browser Server

73

Page 74: Maak Je Site Sneller!

74

Page 75: Maak Je Site Sneller!

Server Side #1Gebruik Last-Modified-

en ETag-headers

Page 76: Maak Je Site Sneller!

76

Standaard aan!

Page 77: Maak Je Site Sneller!

77

▸  curl  -­‐I  http://stoneship.org/

…ETag:  "3273576609"Last-­‐Modified:  Fri,  06  Nov  2009  10:41:51  GMT…

Page 78: Maak Je Site Sneller!

Browser Server

78

Page 79: Maak Je Site Sneller!

79

Browser Server

Page 80: Maak Je Site Sneller!

Browser Server

80

Page 81: Maak Je Site Sneller!

Browser Server

81

Page 82: Maak Je Site Sneller!

82

Browser Server

Page 83: Maak Je Site Sneller!

Browser Server

83

Page 84: Maak Je Site Sneller!

Server Side #2Gebruik Expires- en

Cache-Control-headers

Page 85: Maak Je Site Sneller!

85

▸  curl  -­‐I  http://example.com/assets/style.css

…Expires:  Wed,  16  Jun  2010  14:54:56  GMTCache-­‐Control:  max-­‐age=15552000…

Page 86: Maak Je Site Sneller!

86

Voorbeeld

Page 87: Maak Je Site Sneller!

87

<link  rel="stylesheet"  type="text/css"  href="/assets/style-­‐v1.css">

Page 88: Maak Je Site Sneller!

88

<link  rel="stylesheet"  type="text/css"  href="/assets/style-­‐v1.css">

<link  rel="stylesheet"  type="text/css"  href="/assets/style-­‐v2.css">

Page 89: Maak Je Site Sneller!

89

<link  rel="stylesheet"  type="text/css"  href="/assets/style-­‐v1.css">

<link  rel="stylesheet"  type="text/css"  href="/assets/style-­‐v2.css">

<link  rel="stylesheet"  type="text/css"  href="/assets/style-­‐v3.css">

Page 90: Maak Je Site Sneller!

Server Side #3Comprimeer data

Page 91: Maak Je Site Sneller!

Browser Server

91

Page 92: Maak Je Site Sneller!

Browser Server

92

Page 93: Maak Je Site Sneller!

Tools

Page 94: Maak Je Site Sneller!

94

YSlow (Firefox)

Page 95: Maak Je Site Sneller!

95

Page 96: Maak Je Site Sneller!

96

Page 97: Maak Je Site Sneller!

97

Page Speed (Firefox)

Page 98: Maak Je Site Sneller!

98

Page 99: Maak Je Site Sneller!

99

Page 100: Maak Je Site Sneller!

100

Web Inspector (Safari)

Page 101: Maak Je Site Sneller!

101

Page 102: Maak Je Site Sneller!

102

Page 103: Maak Je Site Sneller!

103

Page 104: Maak Je Site Sneller!

Q & A

104

Page 105: Maak Je Site Sneller!

105