最適化(2)

前の記事をPOSTしたら、結果じゃなくて手順を書けと言われてしまいました(´・ω・`)

と言うわけで簡単にWordpressの高速化について書きます。

まずは、Server側について。
Webサーバー
最近はサーバーも回線も強力ですので、深く考えずに設定しても十分な性能が発揮できます。
ですが、送信するデータ量を減らしたほうが望ましいことは確かです。
と言うわけで送信データ量を減らすため、Expiresヘッダの追加とGzip圧縮を導入しました。

Expiresヘッダの追加により、ブラウザ側でコンテンツのキャッシュが働き送信データの減少が行えます。
画像ファイル(jpg,png,gif,ico)とCSS、JavascriptにExpiresヘッダを付加することにしました。

さらにGzip圧縮を行うことにより送信データ量を減らします。
圧縮率の高いテキストデータにのみGzip圧縮を行うこととします。

うちのサーバーはNginxを使っているので、こんな感じでgzipとExpiresの設定を行っています。
Apacheは設定は適当にググってください。

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile           on;
    directio           8m;
    keepalive_timeout  10;

    gzip               on;
    gzip_http_version  1.1;
    gzip_types         text/plain
                       text/xml
                       text/css
                       application/xml
                       application/xhtml+xml
                       application/rss+xml
                       application/atom_xml
                       application/javascript
                       application/x-javascript ;
    gzip_disable       "MSIE [1-6]\." "Mozilla/4";
    gzip_comp_level    1;
    gzip_proxied       off;
    gzip_vary          on;
    gzip_buffers       4 8k;
    gzip_min_length    1000;

    server {
        listen         80;
        server_name    mmio.net;

        location / {
            root   /home/www/blog/ ;
            index  index.php;
            location ~* \.(jpg|jpeg|gif|css|png|js|ico)$ {
                expires 14d;
            } 
        }
        location ~ \.php$ {
            fastcgi_pass   unix:/tmp/php.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /home/www/blog/$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

PHP
元から高速化設定の導入済みのため、今回の作業とは直接の関係はありませんが……
PHP実行時に毎回毎回スクリプトのコンパイルが行われるのは効率が悪いため、
このサーバーではPHPアクセラレータAPC(Alternative PHP Cache)を導入しています。
APCを簡単に説明すると、
PHP実行時にコンパイル済みのバイナリをキャッシュし、再実行時はコンパイル無しで高速実行するというものです。

有名なモジュールですので導入方法とかは割愛します。
うちのサーバーではこんな感じの設定になっています。

apc.enabled = 1
apc.shm_size = 96M
apc.ttl = 3600
apc.user_ttl = 3600
apc.gc_ttl = 7200
apc.mmap_file_mask = /dev/zero
apc.max_file_size = 8M

WordPress本体については後ほど書きます。