話題のナレッジベース | Knowledge Base Weblogs space
HOMEBlogs index Internet >> space
space space
space
space
space
space
October 31, 2008 space
   space
space

ページパフォーマンス計測ツールの「YSlow for Firebug」がリリース

space

Yahooからページパフォーマンス計測ツールの「YSlow for Firebug」がリリースされました。Firebugをインストールしている上で、YSlowをインストールすると、Webサイトの高速化を行うためのポイントと、現状についてのポイント表示を行ってくれます。

これ、実際に試してみるとよく分かるのですが、いかに工夫をしていないサイトは、改善の余地があり余っているか。。ほんと身を引き締められます。ちなみにYSlowでは次の項目をポイントに挙げています。


これらの観点から、総合的なポイントを算出してくれます。最も良いのがAランクで、最も悪いのがFランク。自分のサイトはどうだろう?と、いうわけで直近で仕事で作っていたサイトを計測してみると「F」でした。。。orz ちなみにGoogle.comは「A」、Yahoo.comで「B」、Yahoo.co.jpで「C」でした。Yahooも国内外でランクが違うのはなかなか興味深いです。また、CSS+JavaScriptガリガリのサイトの場合、結構工夫していないと、すぐにランクは落ちてしまうと思います。みなさんも自サイトは要チェック!

Webサイトの高速化 フロントエンドのパフォーマンスの重要性
Webサイトの高速化 ルール1 HTTPリクエストの数を減らそう!
Webサイトの高速化 ルール2 CDNを使おう!
Webサイトの高速化 ルール3 Expiresヘッダーを追加しよう!
Webサイトの高速化 ルール4 コンポーネントを圧縮しよう!
Webサイトの高速化 ルール5 CSSは上に!
Webサイトの高速化 ルール6 scriptは下に!
Webサイトの高速化 ルール7 CSSのExpression()は使わない!
Webサイトの高速化 ルール8 JavaScriptとCSSは外部ファイルに!
Webサイトの高速化 ルール9 DNS Lookupsを減らそう!
Webサイトの高速化 ルール10 コードのサイズを圧縮する!
Webサイトの高速化 ルール11 ルール11 リダイレクトを避けよう!
Webサイトの高速化 ルール12 スクリプトの重複に気をつける!
Webサイトの高速化 ルール13 ETagを正しく設定する!

さて、仕事サイトが「F」だったのですが、「F」のままだとWeb屋としてちょっとシャクですし、手直ししてみたいと思います。自分の場合、各項目については、こんな結果でした。

space

 
これで総合で「F」です。。。うーん、悔しい!まずは各項目の中から、「F」である項目から対処していきたいと思います。
 
 CSS Sprites
 
 http://developer.yahoo.com/performance/で紹介されてたCSS Spritesやってるところを、色々みてたらグーグルもそうだったんだね。遅すぎる発見かもしれないけど、感動した。
 
 PEARのImage_TextやText_HighlighterのメンテナでもあるStoyan Stefanov氏による新しいプロジェクトCSS Sprites Generatorが公開されています。
 CSS Sprites Generatorはページの読み込みを高速化するためのWebベースのツールで、読み込みのパフォーマンスを向上させるために、画像読み込みのリクエスト数を減らすことができます
 
 CSS Sprites Generator v.0.0.2-alfa
 
 
 普通の帯域節約術としては、mod_deflateでdeflate圧縮するとか、CSSやJSファイルのHTTPレスポンスヘッダにLast- ModifiedやEtagを追加しておいて、ブラウザがHTTPリクエストヘッダにIf-Modified-SinceやIf-None-Matchを付加するようにし、コンテンツが変更されていなかったら304 Not Modifiedを返すという方法を取るかと思います
 
RFC2068の14.21節には、HTTP/1.1サーバーは有効期限として「無期限」を指定したい場合は、「ちょうど1年後をExipresに指定すべき」とあり、また「HTTP/1.1サーバーは有効期限として1年以上を返すべきでない」とされています。

Expiresヘッダーを使えば、それらのコンポーネントをキャッシュさせて、不必要なhttpリクエストを避けることができます。Expires ヘッダーはよく画像をキャッシュさせるために使用されますが、Javascript、スタイルシート、Flashといったすべてのコンポーネントでも使用すべきです。

ブラウザやプロキシサーバにキャッシュさせることで、httpリクエストの数もサイズも減らして、より高速にページをロードできるようになります。 Webサーバは、httpレスポンスのExpiresヘッダーによって、そのコンポーネントがいつまでキャッシュして良いか、クライアントに知らせることができます。

Apahce に mod_expiresを確認します。このために、Apache の設定ファイル httpd.conf を確認します。

LoadModule expires_module modules/mod_expires.so

ExpiresActive On
ExpiresByType text/css "access plus 1 year"
ExpiresByType text/htm "access plus 7 days"
ExpiresByType text/html "access plus 10 minutes"
ExpiresByType application/x-javascript "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
 
 
mod_expiresとmod_rewriteを使ってサイトの帯域節約と体感速度を向上させる方法
http://www.onflow.jp/blog/archives/2007/06/mod_expiresmod_rewrite.html


次は「Gzip Components」について、対応してみたいと思います。

gzip による圧縮はだいたい70%程度、レスポンスのサイズを減らします。今日のインターネットトラフィック上で使用されているブラウザの90%はgzipをサポートしています。
Apahceを使用しているのなら、gzipのモジュール設定はそのバージョンによります。1.3系ならmod_gzipを、2系ならmod_deflateを使用して下さい。

これは要するにHTTPのレスポンスを圧縮することで、レスポンスを速くしよう!という狙いです。Apache2.0, 2.2系統ならmod_deflateを利用することでレスポンスの圧縮が可能です。ちなみにApache2.2系からはmod_filterがどうも推奨されているようなのですが、まとまった情報が少なかったので、今回はmod_deflateを利用してみることにします。
 
対応方法は非常に簡単。httpd.confについて次の項目を追記します。

Apahce に Webminが導入されている場合には、仮想サーバのオプションのドキュメントのオプションにある、「ETagヘッダの生成元」の設定を最終更新日付などに設定し、再起動すれば設定が有効となります。


@IT:mod_deflateによるコンテンツの圧縮転送(1/3)
 
LoadModule deflate_module modules/mod_deflate.so


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

AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rdf+xml

Locationのところは各環境に合わせてください。ある階層のみに対応させる場合はDirectoryとかでもいいと思います。上記の前半は、圧縮についての全般的なルールです。圧縮を可能に、gzip圧縮を扱うことができない古いブラウザからのリクエストについては、圧縮したレスポンスを返さない、画像ファイルについては圧縮しても無意味(すでに圧縮されているデータ)なので圧縮しない、などの設定になります。

後半は、圧縮対象のファイルをMIMEタイプによって指定しています。上記では全部バラして書きましたが、少し冗長なのでこんな書き方でもOKです。


さて、これでhttpdを再起動させて、実際に圧縮できているかどうか確認します。確認はYSlowのFirebug上の「YSlow」タブの「Performance」で、「Gzip components」の箇所を確認するのもいいですし、もっと細かな圧縮量が知りたい場合は、このサイトから確認することも可能です。調べ方はとても簡単で、調査対象URLを入れて「go」を押すだけでOK。ちゃんとgzipされたレスポンスを返した場合は、「圧縮後/圧縮前」のそれぞれのサイズを算出してくれます。
 

http://www.port80software.com/


では、さっき「F」だった、つまりレスポンス圧縮について何も対応していなかった僕のサイトを入れてみると、

・圧縮前:12754 bytes→
・圧縮後:3608 bytes

というわけで72.0%も圧縮されました!!(ちょっと予想以上の圧縮に笑ったw)また、YSlowの評価もgzipの項目が「F」から一気に「A」になりました。あわせて総合ランクも「F」から「D」に上がりました!

と、いうわけで、ほんの少し手を入れてあげるだけでグーンと効果があるので、mod_deflateをまだ試していないWeb屋さんは、ぜひ検討をば。もちろん圧縮についてはCPUを食うので、現状でWebサーバのCPUリソースを結構消費している場合は要検討ですよ。


ファイルを圧縮するmod_deflateの効果
http://zapanet.info/blog/item/961

Webサイトの高速化 ルール4 コンポーネントを圧縮しよう!
http://www.inter-office.co.jp/contents/184

@IT:mod_deflateによるコンテンツの圧縮転送(1/3)
  
 

space
HOMENews BlogsInternet | October 31, 2008 |  twitter Livedoor Buzzurl はてな Yahoo!ブックマーク人が登録
space


space Entries of this Category
space

  Next >> F1 ブラジルGP ハミルトン ワールドチャンピオン獲得の条件 >> 

2008年シーズンのF1も残すところあと1戦となった。今シーズンも2006年と2007年に続き最終戦でワールドチャンピオンが決定することになる。ポイントリーダーのルイス・ハミル...»この話題を見る…


  Previous << デルタ航空とノースウエスト航空が合併、社名は「デルタ航空」 << 

米系航空大手のデルタ航空とノースウエスト航空は米国時間の10月29日に合併し、世界最大の航空新会社を発足させた。同日付で米司法省の承認が得られたためで、旅客輸送能力で米アメリカ... »この話題を見る…


space
space
Welcome to knowledgeBase  Blogs  ▲TOP