measuring web performance - 自己満足で終わらないためのパフォーマンス計測 -

81
自己満足で終わらないためのパフォーマンス計測 Measuring  Web Performance Internet Business Headquarters Web developer Koji Ishimoto 2012.06.30 @CSS Nite LP23

Upload: koji-ishimoto

Post on 27-Jan-2015

107 views

Category:

Documents


0 download

DESCRIPTION

世の中にはさまざまなパフォーマンスTipsがあり対応したものの、本当にこれって効果でているの?とは思ったことはないでしょうか。たぶん速くなっただろう……で終わってないでしょうか。 本セッションでは、まずブラウザにページが表示されるまでの仕組みを学びつつ、どこにコストをかければいいのか理解します。各段階別のツールでちゃんと効果測定すれば自己満足で終わらない仕事が可能です!

TRANSCRIPT

Page 1: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

自己満足で終わらないためのパフォーマンス計測

Measuring Web Performance

Internet Business Headquarters Web developer Koji Ishimoto2012.06.30 @CSS Nite LP23

Page 3: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

2012.06.01Joined!

Page 5: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

AgendaI. なぜ計測しなければならないのか

II. ページが表示されるまでの仕組み

III. 計測ツールの紹介

IV. まとめとこれからのこと

Page 6: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

I. なぜ計測しなければならないのか?

Why?

Page 7: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Too Many Best Practices

Page 8: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Exceptional Performance - Yahoo! Developer Network

Page 9: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Exceptional Performance - Yahoo! Developer Network

35

Page 10: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Exceptional Performance - Yahoo! Developer Network

35

Web Performance Best Practices - Google Developers

Page 11: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Exceptional Performance - Yahoo! Developer Network

35

Web Performance Best Practices - Google Developers

31

Page 12: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 13: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

80:20

Page 14: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

80:20Designer?

Page 15: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

高速サイトを実現する14のルール

1:HTTPリクエストを減らす

2:CDNを使う

3:Expiresヘッダを設定する

4:コンポーネントをgzipする

5:スタイルシートは先頭に置く

6:スクリプトは最後に置く

7:CSS expressionの使用を控える

8:JSとCSSは外部ファイル化する

9:DNSルックアップを減らす

10:JavaScriptを縮小化する

11:リダイレクトを避ける

12:スクリプトを重複させない

13:ETagの設定を変更する

14:Ajaxをキャッシュ可能にする

Page 16: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Case: Web Designer

制作サイト:

JSの使用:

カバー範囲:

企業サイト(ドキュメントページ)

jQueryプラグインを少々

ドメインの取得からSEO

Page 17: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Effe

ctive

EasyDifficult

Inef

fect

ive

Put Stylesheets at Top

Make Fewer HTTP Requests

Put Scripts at Bottom

Avoid CSS Expressions

Use a Content Delivery Network

Add Expires or Cache-Control Header

Gzip Components

Make JavaScript and CSS External

Reduce DNS Lookups

Minify JavaScript and CSS

Avoid Redirects

Configure ETags

Make Ajax Cacheable

Remove Duplicate Scripts

Case: Web Designer

Page 18: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Effe

ctive

EasyDifficult

Inef

fect

ive

Put Stylesheets at Top

Make Fewer HTTP Requests

Put Scripts at Bottom

Avoid CSS Expressions

Use a Content Delivery Network

Add Expires or Cache-Control Header

Gzip Components

Make JavaScript and CSS External

Reduce DNS Lookups

Minify JavaScript and CSS

Avoid Redirects

Configure ETags

Make Ajax Cacheable

Remove Duplicate Scripts

Case: Web Designer

Page 19: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Effe

ctive

EasyDifficult

Inef

fect

ive

Put Stylesheets at Top

Make Fewer HTTP Requests

Put Scripts at Bottom

Avoid CSS Expressions

Use a Content Delivery Network

Add Expires or Cache-Control Header

Gzip Components

Make JavaScript and CSS External

Reduce DNS Lookups

Minify JavaScript and CSS

Avoid Redirects

Configure ETags

Make Ajax Cacheable

Remove Duplicate Scripts

Case: Web Designer

Page 20: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

CSSセレクタの最適化Right to Left

Page 21: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Performance Impact of CSS Selectors

2009

http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/

Page 22: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 23: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

-20ms

Page 25: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

- Style Sharing

- Rule Hashes

- Ancestor Filters

- Fast Path

Optimizing CSS selector matching (WebKit)

Page 26: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

-5ms

Page 27: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

* { box-sizing: border-box } FTW « Paul Irish

If you aren't getting 90+ Page Speed scores, it's way too early to be thinking about selector optimization.

Page 28: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 29: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

費用対効果を知る

Page 30: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

II. ページが表示されるまでの仕組み

Life of Web Page

Page 31: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Request

HTML Sent

Onload

Page Complete

Request

User’s Interaction

Life of Web Page

Page 32: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Request

HTML Sent

Onload

Page Complete

Request

User’s Interaction}

Life of Web Page

Page 33: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Promptfor

unloadRedirect

Appcache

DNS TCP

Request Response Processing Onload

Unload

Rendering

Performance Timing

Page 34: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Promptfor

unloadRedirect

Appcache

DNS TCP

Request Response Processing Onload

Unload

Rendering}Performance Timing

Page 35: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

DOM Tree

Style Struct

Render Tree Paint!

tag

style

Layout

Rendering Flow (WebKit)

Page 37: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 38: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

俯瞰的視点を持つ

Page 39: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

III. どこを計測するのか?計測手段

Measure Tools

Page 40: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

I. 評価・アドバイス系

II. ASP系

III. デベロッパーツール系

IV.スポット計測系

Page 41: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

I. 評価・アドバイス系

Page 43: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

YSlow

Page 45: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

PageSpeed Insights

Page 46: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

- ビギナー向け- 一番最初に使用すべきツール- 優先度の高いものから対応

YSlow / PageSpeed Insights

Page 47: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

II. ASP系

Page 49: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

WebPagetest

Page 51: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Mobitest

Page 53: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

1: navigationStart

2: unloadEventStart

3: unloadEventEnd

4: redirectStart

5: redirectEnd

6: fetchStart

7: domainLookupStart

8: domainLookupEnd

9: connectStart

10: connectEnd

11: secureConnectionStart

12: requestStart

13: responseStart

14: responseEnd

15: domLoading

16: domInteractive

17: domContentLoadedEventStart

18: domContentLoadedEventEnd

19: domComplete

20: loadEventStart

21: loadEventEnd

Navigation Timing API

Page 54: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

- 無料でありながら高機能- ウォーターフォールチャートの確認- ユーザーに近い読み込み時間の確認

WebPagetest / Mobitest / GA

Page 55: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

III.デベロッパーツール系

Page 56: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Developer Tool

Page 58: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

- より詳細な分析に利用- Try&Errorの繰り返しに便利- 要:結果から改善策を読み取る力

Developer Tool / Firebug

Page 59: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

IV.スポット計測系

Page 62: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

- 最初から使わない(考えない)- サイト制作に合わせて利用

jsPerf / CSS Stress Test

Page 64: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Social Action

Page 65: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Cost:Social Action:

0.8~1.0sec0.01~0.2%

Page 66: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 67: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 68: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 69: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Remove JavaScript Files

Page 70: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

-1000ms

Page 71: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 72: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

計測 - 分析 - 最適化

Page 73: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

IV. まとめとこれからのこと

Conclusion

Page 74: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Network >>> CPU

Page 75: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

今後10年間でインターネットの帯域幅速度は

57倍になると思われているが、コンピューターの処理能力は100倍以上になるだろう。

モバイルサイト vs. アプリ: 来るべき戦略の転換 – U-Site

Page 76: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -
Page 77: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Minimize HTTP Requests! Requests 30 vs 1 (CSS Sprite)

Page 78: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Shut the f**k up and write some code.

Page 79: Measuring Web Performance - 自己満足で終わらないためのパフォーマンス計測 -

Shut the f**k up and reduce some HTTP request.