More Related Content
Similar to 設計から実装まで、今すぐ始める高速化 (20)
More from masaaki komori (20)
設計から実装まで、今すぐ始める高速化
- 1. 設計段階から実装まで、今すぐ始める高速化
設計段階から実装まで、今すぐ始める高速化
CSS Nite LP Disk 23
,
こもりまさあき
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 2. 設計段階から実装まで、今すぐ始める高速化
自己紹介を…
こもりまさあき http://protean.im
1990年代前半に都内のDTP系デザイン会社にてアルバイトをはじめる。大
学卒業後そのまま正社員となり、入出力業務、デザイン業務、ネットワーク
関連業務に並行して従事。2001年、会社を退職しフリーランスの道へ。
案件ごとに業務内容や立ち位置が異なるため、職域的な肩書きはなし
近著に『レスポンシブ・ウェブデザイン標準ガイド(MdN刊)』
『WordPress 高速化&スマート運用必携ガイド(共著・MdN刊)』、など
Twitter: @cipher / @proteanbm
Facebook: gaspanik
Instagram: @cipher
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 3. 設計段階から実装まで、今すぐ始める高速化
Webサイトが遅い原因の80%は、
フロントエンドの処理だと言われる
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 6. 設計段階から実装まで、今すぐ始める高速化
バックエ
ンドの
話もまと
めて
今日は、そんな設計段階から
実装に関わる部分までの話を
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 7. 設計段階から実装まで、今すぐ始める高速化
これからお話しすること
• コンテンツのロードを速くしよう
• キャッシュを使いこなそう
• 外部要因による遅延を改善しよう
• リクエストを分散させてより高速に
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 11. 設計段階から実装まで、今すぐ始める高速化
ネットワークの仕組みを理解し、
より速く配信することを考えよう
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 13. 設計段階から実装まで、今すぐ始める高速化
目には見えない部分を改善する、
それもデザインのひとつですから
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 20. 設計段階から実装まで、今すぐ始める高速化
@import、えっと…
@import url(contents_base2.css);
@import url(base.css);
@import url(layout.css);
@import url(common.css);
@import url(menu.css);
@import url(contents_base.css);
<link rel="stylesheet"
… href="import.css"> import.css @import url(search.css);
@import url(top.css);
@import url(news.css);
@import url(chmn.css);
@import url(map.css);
@import url(faq.css);
@import url(logo.css);
@import url(background.css);
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 21. 設計段階から実装まで、今すぐ始める高速化
これだと、こういう結果になる
example.html
import.css
base.css
layout.css
common.css
menu.css
contents_base.css
search.css
top.css
news.css
chmn.css
map.css
faq.css
logo.css
…
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 26. 設計段階から実装まで、今すぐ始める高速化
さっきの@importもまとめてしまえば
example.html
compact.css
jQuery.js
plugin.js
imageA.png
imageB.png
imageC.png
imageD.png
imageE.png
imageF.png
imageG.png
imageH.png
imageI.png
imageJ.png
…
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 29. 設計段階から実装まで、今すぐ始める高速化
ツールやサービスを使えば、比較的簡単
OS X 環
境な
• excssive CodeKit ら
便利 !
http://www.excssive.com/
• YUI Compressor
http://developer.yahoo.com/yui/compressor/
• Closure Compiler Service
http://closure-compiler.appspot.com/home
CodeKit: http://incident57.com/codekit/
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 34. 設計段階から実装まで、今すぐ始める高速化
Apacheの場合はこのように
• 2.x系なら、mod_deflateを有効にする
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</IfModule>
mod_deflateの記述例: https://httpd.apache.org/docs/2.2/mod/mod_deflate.html
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 47. 設計段階から実装まで、今すぐ始める高速化
ファイルに有効期限を設定するには
• Apacheなら、mod_expires を有効にする
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 1 years"
ExpiresByType image/jpeg "access plus 10 years"
ExpiresByType image/png "access plus 10 years"
ExpiresByType text/css "access plus 1 years"
…
</ifModule>
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 50. 設計段階から実装まで、今すぐ始める高速化
もう一度、全文掲載
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType image/x-icon "access plus 1 years"
ExpiresByType image/vnd.microsoft.icon "access plus 1 years"
ExpiresByType image/jpeg "access plus 10 years"
ExpiresByType image/png "access plus 10 years"
ExpiresByType image/gif "access plus 10 years"
ExpiresByType text/css "access plus 1 years"
ExpiresByType text/javascript "access plus 1 years"
ExpiresByType application/x-javascript "access plus 1 years"
ExpiresByType text/html "access plus 600 seconds"
ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 53. 設計段階から実装まで、今すぐ始める高速化
.appcacheを有効にして、ファイルを列挙
• キャッシュ・マニフェストを用意
CACHE MANIFEST
# version 2
CACHE:
index_Resources/PIE.htc
index_Resources/TopImage_Bg.jpg
…
NETWORK:
index.html
index_Resources/HYPE.js
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 56. 設計段階から実装まで、今すぐ始める高速化
さらに? キャッシングサーバの導入
• 大量のアクセスを処理するなら、
キャッシングサーバを追加して
静的なファイルだけはそこ経由で配信する
• Apache + Varnish
https://www.varnish-cache.org/
• Nginx によるリバースプロキシ
http://wiki.nginx.org/NginxJa
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 63. 設計段階から実装まで、今すぐ始める高速化
外部の要素を取り込むことで起こる問題
• 外部のサービスが止まった場合、
最悪コンテンツのロードが途中で止まる
• JavaScriptの
document.write()
• 外部ドメインに接続する時、
起こっているのは、DNSルックアップ
document.writeでSCRIPTを書き出すなやで!: http://t32k.me/mol/log/dont-docwrite-scripts/
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 65. 設計段階から実装まで、今すぐ始める高速化
DNSプリフェッチの導入という手も
• 接続する予定のドメインは、
あらかじめDNSに問い合わせさせておこう
• 有効になる、ならないブラウザがある
• link要素を使って、参照するドメインを記述
https://github.com/h5bp/html5-boilerplate/wiki/DNS-Prefetching
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 79. 設計段階から実装まで、今すぐ始める高速化
外部からjQueryを読み込んでみる
• フォールバックも忘れずに
<script src="//ajax.googleapis.com/ajax/libs/jquery/バージョン/
jquery.min.js"></script>
<script type="text/javascript">
window.jQuery || document.write(unescape('%3Cscript
src="js/jquery/jquery-バージョン.min.js"%3E%3C/script%3E'));
</script>
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 82. 設計段階から実装まで、今すぐ始める高速化
代表的なCDNサービス
• Akamai
http://www.akamai.co.jp/enja/
• CloudFlare
http://jp.cloudflare.com/
• Amazon Web Service(S3* / CloudFront)
http://aws.amazon.com/jp/cloudfront/
* S3はストレージサービスでCDNというわけではない
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 89. 設計段階から実装まで、今すぐ始める高速化
多くのサイトでネックなのは、
そこに配置された画像フ イ
ァ ル
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 90. 設計段階から実装まで、今すぐ始める高速化
インフラそのものが弱い、
使用画像が多い き
と など、
その効果は絶大なはず
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 93. 設計段階から実装まで、今すぐ始める高速化
今日のまとめ
• 箱作りのファイルは、とにかく速く
• キャッシュをうまく使えばリクエスト減
• 外部要因による遅延を解消する
• ファイルが多すぎるなら、サーバ分割
• 設計段階からちゃんと考えること
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき
- 94. 設計段階から実装まで、今すぐ始める高速化
これからのコンテンツ配信は、
実装する人間だけじゃなく、
いろんな立場が意識をしないと
2012. 06. 30 CSS Nite LP, Disk 23 | こもりまさあき