apache Archive
mod_auth_mysqlを利用してBasic認証にMySQLのデータを利用する
認証APIについていろいろ調査をしていて、TwitterAPIでPOST系APIで認証にBasic認証を利用している箇所で、どうやって実装しているんだろう?という話になりました。「まさか全ユーザの情報を.htpasswdファイルなんかに格納しているはずは無いだろうに。。。」と思いながら調べていると、Basic認証のユーザ情報を既存のMySQLのDB/Tableと統合するためのApacheモジュール「mod_auth_mysql」なるものを発見しました。この利用方法について、まとめてみたいと思います。
YSlow対策でmod_expireを利用してHTTPレスポンスヘッダにExpiresを追加する
YSlowの評価に対する改善シリーズ、その2です。mod_deflateを利用してHTTPレスポンスを圧縮させる方法はこちらから。
前回で、総合ポイントが「F」だったサイトをレスポンス圧縮することで、総合ポイントを「D」にまで上げることができました。今回は、残りの「F」項目の中の「Add an Expires header」についての処理を行いたいと思います。
YSlowの公式サイトによると、「リッチサイトはCSSやらJSやら多くのファイルをロードするために、リクエスト回数も増えちゃうよね。でも変更が少ないファイルについてはExpiresヘッダを追加することで、ユーザにキャッシュさせ、リクエスト回数を減らすことができるよ(大雑把な意訳)」と、あります。つまり、Apache側でExpiresヘッダをレスポンスに追加することで、「このファイルは、xx日までは再リクエストしなくてもいいよ」なルールを決めることができます。このルールを追加することができるのが、mod_expiresになります。
Expiresのルールは各サイトのポリシーにもよると思いますが、基本的には静的なファイル、更新されることがほとんど無いファイルがそれにあたります。具体的に言えば、gif/jpgなんかの画像ファイル、JS、CSSファイルなんかがそれに当たると思います。とは言え、いきなりガッツリとキャッシュさせてしまうのも、正直不安なところがあります。なので、最初はキャッシュさせる期間は少なめにして、問題なさそうなのを見計らいながら段階的に期間を延ばしていくのがベターかと思います。
具体的にmod_expiresの設定を行う場合は、次のようになります。
YSlow対策でmod_deflateを利用してHTTPレスポンスをgzip圧縮
もう、いろんなニュースサイトで言われていますが、Yahooからページパフォーマンス計測ツールの「YSlow for Firebug」がリリースされました。Firebugをインストールしている上で、YSlowをインストールすると、Webサイトの高速化を行うためのポイントと、現状についてのポイント表示を行ってくれます。
これ、実際に試してみるとよく分かるのですが、いかに工夫をしていないサイトは、改善の余地があり余っているか。。ほんと身を引き締められます。ちなみにYSlowでは次の項目をポイントに挙げています。
- Make Fewer HTTP Requests
- Use a Content Delivery Network
- Add an Expires Header
- Gzip Components
- Put CSS at the Top
- Move Scripts to the Bottom
- Avoid CSS Expressions
- Make JavaScript and CSS External
- Reduce DNS Lookups
- Minify JavaScript
- Avoid Redirects
- Remove Duplicate Scripts
- Configure ETags
YSlow User Guideより抜粋
これらの観点から、総合的なポイントを算出してくれます。最も良いのがAランクで、最も悪いのがFランク。自分のサイトはどうだろう?と、いうわけで直近で仕事で作っていたサイトを計測してみると「F」でした。。。orz ちなみにGoogle.comは「A」、Yahoo.comで「B」、Yahoo.co.jpで「C」でした。Yahooも国内外でランクが違うのはなかなか興味深いです。また、CSS+JavaScriptガリガリのサイトの場合、結構工夫していないと、すぐにランクは落ちてしまうと思います。みなさんも自サイトは要チェック!
さて、仕事サイトが「F」だったのですが、「F」のままだとWeb屋としてちょっとシャクですし、手直ししてみたいと思います。自分の場合、各項目については、こんな結果でした。
- B : Make Fewer HTTP Requests
- F : Use a Content Delivery Network
- F : Add an Expires Header
- F : Gzip Components
- A : Put CSS at the Top
- C : Move Scripts to the Bottom
- A : Avoid CSS Expressions
- n/A : Make JavaScript and CSS External
- A : Reduce DNS Lookups
- C : Minify JavaScript
- A : Avoid Redirects
- A : Remove Duplicate Scripts
- F : Configure ETags
これで総合で「F」です。。。うーん、悔しい!まずは各項目の中から、「F」である項目から対処していきたいと思います。(数が多すぎて)どれから手をつけてもいいのですが、今回は「Gzip Components」について、対応してみたいと思います。