Top Banner
Coding Web Performance ~Webパフォーマンス最適化のためのコーディング手法~ Koji Ishimoto Web Designer April 17, 2010 CSS Nite LP, Disk 9 Twitter:#cssnitelp9
57
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: Coding Web Performance

Coding Web Performance~Webパフォーマンス最適化のためのコーディング手法~

Koji IshimotoWeb Designer

April 17, 2010CSS Nite LP, Disk 9

Twitter:#cssnitelp9

Page 2: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Agendaビジネスインパクトとスタンス

ボトルネックはどこか?

とあるサイトの改善事例

今日のまとめ

Page 3: Coding Web Performance

ビジネスインパクトとスタンス

Business Impact and Stance

Page 4: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Google Ranking Algorithm2010.04.09

Page 5: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Google AdWords

Page 6: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Google Webmaster Tools

Page 7: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

高速サイトがもたらす利益

再訪問数の増加

セッションあたりのPV数増加

コンバージョン率の改善

収益増加

顧客満足度の向上

インフラコスト・帯域幅の節約

Page 8: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Before After

Coder Coder + Performance

->

Page 9: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

コーダー/デザイナーは忙しい

HTML5 / CSS3

JavaScript (jQuery)

Accessibility

Usability

Information Architecture

Web Analytics

etc.

Page 10: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Web Performance?

Page 11: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Page 12: Coding Web Performance

最小限の対策で最大限の効果

Page 13: Coding Web Performance

ボトルネックはどこか?

Where is the time spent?

Page 14: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

HTTPWatch 7.0

Page 15: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Waterfall Chart

Page 16: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

リクエストの各段階

Blocking - ブロッキング

DNS Lookup - DNSルックアップ

Connect - 接続

Send - 送信

Wait - 待機

Receieve - 受信

Cashe Read - キャッシュ読み込み

Page 17: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

リクエストの各段階

Server

Client

接続の確立 データ送信 送信完了

最初の接続

最初のHTTPリクエスト

DNSルックアップ

ISP

DNS Lookup Connect

データ受信

Wait

受信完了

Receive

Page 18: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Waterfall Chart

Page 19: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Wait Time!待機時間

Page 20: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Wait Time!

Page 21: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Internet Explorer 6

Page 22: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Firefox 3.6

Page 23: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

ホスト名毎の同時接続数

HTTP/1.1 の仕様では「ひとつのホスト名に対して

同時接続できるコンポーネント数は2つまで」と制限

IE6 IE7 IE8 Fx3.6 Chrome4 Safari4 Opera10

2 2 6 6 6 5 42 2

Page 24: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Waterfall Chart

Fx3.6

2

6

IE6

Page 25: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Internet Explorer 6

Page 26: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Internet Explorer 6 (Blocking)

Page 27: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Blocking Time!ブロッキング

Page 28: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Blocking Time!

Page 29: Coding Web Performance

HTTPリクエストはコストが高い

Page 30: Coding Web Performance

とあるサイトの改善事例

Recommend Practice

Page 31: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

とあるサイトの改善事例

CSS スプライト

データ URI スキーム

CSS, JS ファイルを結合する

CSS3 プロパティ

奥の手

Page 32: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

CSS スプライト

複数の画像を1つの合成画像としてグループ化し

背景の位置指定を使って表示する方法

#globalNav ul li a { display: block; height: 28px; background-image: url(/img/common/hd/bg_globalnav.png);}

#globalNav #home.on a { background-position: 0 -60px;}

#globalNav #info.on a { background-position: -108px -60px;}

#globalNav #news.on a { background-position: -219px -60px;}

#globalNav #business.on a { background-position: -375px -60px;}

...

Page 33: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Before

Page 34: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

After

Page 35: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

CSS スプライト効果

{-150ms

CSS Sprites Non Sprites

Page 36: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

スプライトのジレンマ

Pages - ページ数

Maintenance - 保守性

Optimization - 最適化

Pages

Maintenance Optimization

Page 37: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

HTTP Requests 11-> 3 CSS Sprites

Page 38: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

データURIスキーム

外部の画像ファイルを参照することなく

画像をマークアップ中に直接埋め込むことができる

書式 - data:[メディアタイプ][;base64],データ

.pageTop a { background: url(/img/common/ico_arrow.png) no-repeat;}

!.pageTop a { background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAqCAMAAAC0q5rDAAAABGdBTUEAAKINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADAUExURenp6fLw7/b29vT09NjY2NPT05u20/7+/u3t7e/v7/Hw7/Pz8+/v7v39/fj4+Ofn5/Dv7/Hx8fLy8uXl5UF6tODg4Dl1sfz8Nvb2n5+ePj49ra2vv73gCMTEL32budBhC9TCv6i99Ftv3yaTB3IVufu8lTTkclSooenfZBBKpMzgPv3GrgrZHLTpldn4H2PYpnU7+zGd+WgNZtc...) no-repeat;}

Page 39: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

データURIスキームの問題点

IE5 - 7 非対応

サイズ制限

Opera 7.2: 4.1KBまで

Internet Explorer 8: 32KBまで

Firefox 2: 100KBまで

Page 40: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

HTTP Requests 1-> 0Data URI Scheme

(Non IE5-7)

Page 41: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

CSS, JS ファイルを結合する

複数の外部CSS,JavaScriptファイルを

1つのCSS, JavaScriptファイルにまとめる

<link rel="stylesheet" type="text/css" href="file/css/reset-min.css" /><link rel="stylesheet" type="text/css" href="file/css/fonts-min.css" /><link rel="stylesheet" type="text/css" href="file/css/structure.css" />

!<link rel="stylesheet" type="text/css" href="file/css/common.css" />

<script type="text/javascript" src="file/js/jquery-min.js"></script><script type="text/javascript" src="file/js/jquery-plugin1.js"></script><script type="text/javascript" src="file/js/jquery-plugin2.js"></script>

!<script type="text/javascript" src="file/js/common.js"></script>

Page 42: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

HTTP Requests 6 -> 2 Combined Scripts and Stylesheets

Page 43: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

CSS3 プロパティ

Box Shadow.hoge { box-shadow: 5px 5px 5px #666666; }

Border Radius.hoge { border-radius: 20px; }

Opacity / RGBA / HSLA.hoge {opacity:0.5; color:rgba(255,255,0,0.5); color:hsla(120,100%,50%,0.5);}

Gradient.hoge { background-image: linear-gradient(top, #000000, #cccccc); }

etc.

Page 44: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

HTTP Requests ? -> 0 CSS Level 3

(Non IE)

Page 45: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

(‘・ω・ )`コマッタピョン....

Page 46: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Change Design!

Page 47: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

デザインを考えなおしてみる

SmoothScroll機能って必要?-> ページ高とクリック数を調査し、廃止

検索ボタン画像って必要?

->

-> 検索数を調査し、Submitボタンに変更

Page 48: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

HTTP Requests 2 -> 1+αChange Design!

Page 49: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Google Site Performance

Page 50: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Google Site Performance

HTTPリクエスト数は 32 ->17

平均読み込み時間は 0.5 秒

全体の上位 2 %に入る高速サイト

2010/4/8 現在

Page 51: Coding Web Performance

今日のまとめ

Today’s Conclusion

Page 52: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

今日のまとめ

ビジネスインパクトとスタンス

-> パフォーマンスを武器に効率よく対策すべし

ボトルネックはどこか?

-> HTTPリクエストはコストが高い

Page 53: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

今日のまとめ

とあるサイトの改善事例

-> リクエスト数を減らす簡単な方法はないCSS スプライトデータ URI スキームCSS, JS ファイルを結合するCSS3 プロパティ

-> それは本当に必要なのか?

Page 54: Coding Web Performance

Thank you!

Blog: http://t32k.com/mol/Twitter : http://twitter.com/t32k/

Page 55: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

Books

Page 56: Coding Web Performance

CSS Nite LP, Disk 9 : Coder's Higher

URLshttp://t32k.com/mol/2010/04/using-site-speed-in-web-search-ranking/

http://t32k.com/mol/2010/04/data-uri-scheme/

http://t32k.com/mol/2010/04/httpwatch-6-2-basic-edtion/

http://t32k.com/mol/2010/03/performance-business/

http://t32k.com/mol/2009/11/introduction-to-web-performance/

http://t32k.com/mol/2009/11/high-performance-web-design/

http://www.slideshare.net/sigwyg/css3-for-tomorrow

http://www.phpied.com/css-performance-ui-with-fewer-images/

http://www.google.com/webmasters/tools/

http://adwords.google.com/support/aw/bin/answer.py?hl=jp&answer=93112

http://www.findmebyip.com/litmus/