Top Banner
MAAK JE SITE SNELLER!
105

Maak Je Site Sneller!

Jul 13, 2015

Download

Technology

Denis Defreyne
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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