ホームページの表示を高速化する

出典: Live Commerceドキュメント

Frameworkを使ったホームページは、Frameworkを使わない場合と比べて内部に多くのロジックを溜め込むことになるのでどうしてもサイトの表示スピードが遅くなりがちです。

Live CommerceではZend Frameworkの速度低下の弊害を最小化するためにサイトの最適化をいくつか行っています。 ここでは最適化に関するカスタマイズできる個所を紹介します。

目次

.htaccess mod_expiresの設定

public_htmlフォルダ直下には.htaccessがあります。.htacessファイルのmod_expiresに関するカスタマイズできる個所をコメントしています。 mod_expiresはApacheのモジュールとしてインストールされます。mod_expiresがインストールされていなくても、システムの動作とは直接関係ありませんが、ブラウザにキャッシュさせる有効期限をコントロールできるため、mod_expiresを指定すれば、同一のURLを表示させる時に2回目以降の表示が早くなります。

mod_expiresがインストールされているかどうかを確認するには、サーバ管理者に次のメールを送るか、

サーバ管理担当者様

お世話になります、_________と申します。
この度、オープンソースで配布されているLive Commerce(http://www.live-commerce.com)を使いたいと思いますが、
サイトの最適化に関してApacheのモジュールである「mod_expires」を使わせていただきたいのですが、私の契約
しているプランで可能でしょうか?
確認をお願いします。mod_expiresについては下記URLをご覧ください。
http://httpd.apache.org/docs/2.2/ja/mod/mod_expires.html


もし条件を満たしていない場合、どのようなプランまたは契約内容に変更すれば
利用できますでしょうか。

以上、よろしくお願いいたします

または、あなたがファイルの操作ができるのでしたら、phpinfoを作成して、画面に出力された内容からmod_expiresをテキスト検索してみてください。インストールされいる場合は表示されてるはずです。mod_expires のインストール方法は現時点ではGoogleに聞いてください。後ほど文書には追加予定です。


注意).htaccessファイルはWindowsに付属されているテキストエディタでは通常は開けません。ここではterapadというテキストエディタを使ってファイルを開いています。terapadは無料のテキストエディタで、インストール後、.htaccessファイルをデスクトップに表示されているアイコンの上にドラッグ&ドロップすると、.htaccesssファイルが開けます。

念のため、.htaccessのファイルの改行コードはLFです。Windowsにある標準のテキストエディタを使った場合、改行コードがCRLFになり、データが破損する可能性があるため専用のエディタを使ってください。


.htaccessをオープンし以下の行を探してください。Apacheにモジュールとして組み込みされているmod_expiresの設定を行っています。 mod_expires は文書のキャッシュの有効期限を指定することができます。指定した時刻に到達するまでは、オリジナルファイルではなく、キャッシュされているデータを読みにいきます。

# Expires by type
# ======================
<IfModule mod_expires.c>
    #これはmod_expiresを有効化しています。無効化するにはOnの値をOffにするだけです
    ExpiresActive On
 
    #これは1 monthとある通り、1ヶ月間ブラウザにキャッシュさせます。
    ExpiresDefault "access plus 1 month"
 
    #CSSファイルを1ヶ月間キャッシュします。 1 week とすれば1週間です。
    ExpiresByType text/css "access plus 1 month"
 
    #以下の3行は画像ファイルgif/jpeg/pngファイルををそれぞれ1ヶ月間キャッシュします。
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
 
    #Javascriptファイルを1ヶ月間キャッシュします
    ExpiresByType application/x-javascript "access plus 1 month"
</IfModule>


.htaccess mod_deflate

Apacheのモジュール mod_deflateでブラウザに出力する前にテキストデータを圧縮します。 mod_deflate モジュールはコンテンツのデータをクライアントに出力する前にサーバ側で圧縮します。メリットとして転送量の低減、表示速度の高速化を行えます。詳しい設定方法についてはApacheモジュールのmod_deflateを参照してください。

この部分をカスタマイズする方はサーバエンジニアか、経験のあるプログラマだけが行うようにしてください。 システムのことが分からずに編集した場合、予期せぬエラーが発生する場合があります。

圧縮させるコンテントタイプをいろいろと指定することができます。

# Compress by type
# ======================
<IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch bMSIE !no-gzip !gzip-only-text/html
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
    #DeflateCompressionLevel 4
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/atom_xml
    AddOutputFilterByType DEFLATE application/x-javascript
    AddOutputFilterByType DEFLATE application/x-httpd-php
 
    # Make sure proxies do not deliver the wrong content
    # ======================
    <IfModule mod_headers.c>
        Header append Vary User-Agent env=!dont-vary
    </IfModule>
 
</IfModule>

HTMLソースレベルでの最適化

米Yahoo担当者が発表している「ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール」にてフロントエンドのHTMLソースコードでチューニングできるカスタマイズ方法が紹介されています。是非トライしてみてください。


キャッシュ

キャッシュとは、利用頻度の高いデータやファイルをあらかじめ特定のフォルダなどに格納しておき、リクエストがあった時に、データベースなどにリクエストしなくてもあらかじめ用意してあるデータを出力することで、無駄を省き高速にデータにアクセスできるようにしていることです。

Live Commerceではキャッシュを利用してさまざなま動的ページを静的ファイルに置き換えてコンテンツを出力しています。キャッシュされたファイルは cache ディレクトリに保存されています。

キャッシュにはデータを保持しておく有効期限があらかじめ決められています。有効期限の設定については管理セクションにあるキャッシュを参照してください。