以前から、この Web サイトのレスポンスはあまり良くないと思っていましたが、Google ウェブマスター ツールの「サイトのパフォーマンス」で読み込み時間が4秒を超えるようになったので、これではいけないと思って Google Page Speed を使ってみました。Google Page Speed は、Web ページのパフォーマンスを評価して、ウェブページの読み込み時間を短縮するためのヒントを与えてくれるツールです。Page Speed には、FireFox 版と Chrome 版があります。今回は、FireFox 版を使いました。FireFox 版は、FireFox のアドインなので、インストールは簡単にできます。まず、Firebug 上で動作するので、Firebug アドインをインストールしていなければインストールしておきます。また、オンライン版の Page Speed である Page Speed Online もあるので、アドインをインストールしたくない場合は Page Speed Online を利用することもでき、Web ページの URL を入力するだけで、パフォーマンスの解析をしてくれます。
Page Speed をインストールして、Firebug を起動させると、下の図のように Firebug のツールバーに Page Speed のメニューが追加で表示されるようになります。
Page Speed を実行すると、下の図のように、改善の提案が表示され、「赤丸」が少ない努力で大きく改善できる可能性がある項目を、「黄色の三角」が作業量が多いか大きな効果が得られない項目を、「緑色のチェック」が大きな効果が得られない項目であることを表します。
この Web サイトを Page Speed でチェックしたら、多くのページで「赤丸」に該当した項目は、以下の2項目だったので、この項目を提案のように変更することにしました。
・ブラウザーのキャッシュを有効にする
キャッシュの有効期間を設定する必要がありますが、IIS 7.x では、IIS マネージャーで設定をすることができます。IIS の「HTTP 応答ヘッダー」で、「共通ヘッダーの設定」をクリックすると以下のような設定画面が表示されるので、失効までの期間を Google のアドバイスに合わせて 10 日以上にしてやります。この設定で注意しないといけないのは、このサイトでは Umbraco CMS を使っていますが、Web サイトに有効期限を設定することはできるのですが、画像を保存してあるフォルダーに有効期限を設定するとエラーが発生してしまいます。 原因については、よくわからないので時間ができたら調べようと思っています。
・圧縮を有効にする
IIS 7.x では、「動的なコンテンツの圧縮モジュール」は、既定ではインストールされていません。IIS には、「動的圧縮を使用すると、プロセッサーの使用が増加しサーバーの全体的なパフォーマンスが低下する可能性があります。」という警告があるので、有効にするかどうか一瞬迷うのですが、タスクマネージャーや EC2 の Monitoring でみるとコンピュータの使用率はそれほど高くないので有効にすることにしました。負荷が高くなっている場合を除いて大抵の場合は有効にした方がいいように思います。EC2 の場合は、帯域幅に課金がされるので、利用料を削減する効果もあります。「動的なコンテンツの圧縮モジュール」をインストールするには、コントロールパネルの「Windows の機能の有効化または無効化」で、下の図のように「動的コンテンツの圧縮」の機能を有効にしてやります。モジュールがインストールには、かなり時間がかかりますが、インストールが完了すれば、IIS マネージャで、設定をしたい web サイトを選択して、センターパネルで IIS の「圧縮」を選択して、「動的なコンテンツの圧縮を有効にする」にチェックをいれれば設定が完了です。
この設定した効果は、以下の図のようになりました。ページの読み込み時間は 2.2 秒になり、以前より約 2 秒短縮することができました。実は、この設定と併せて、サーバーを Amazon EC2 の東京リージョンに移動させたので、それによる効果が半分ぐらい入っています。しかし、階段状になっている 3 段のうち最初の2つはこの設定の効果だと思われるので、設定の方もかなりの効果があったと思っています。