広告・Googleアドセンス728px

Article(記事)

WordPressで静的コンテンツをCookieフリードメイン化してみる

更新日:

ご注意ください
この記事は2年以上前に書かれたものですので、内容が古い可能性があります。


知らなかったのですが静的コンテンツと動的コンテンツのサーバを分けるのはこの世界では常識のようでその理由はいろいろとあるようです。
今回はその理由の1つである、本来cookieが不要である静的コンテンツに対してもcookieを送信してしまっている無駄を削減することでデータ転送量を減らしてみることにします。

流れとしては、
①静的コンテンツ用ドメインの作成
②apacheのバーチャルドメイン化
③wordpress側の設定変更
④wordpress側のコンテンツの移行(書き換え)
を順に実施していきます。

DNSへドメインの追加

静的コンテンツ用にサブドメインを追加します。
/var/named/chroot/var/named/配下のzoneファイルにstaticというサブドメインを切ります。
service named restartかrndc reloadで設定ファイルを読み直しましょう。serial値の変更をしないときちんと反映されませんので注意してください。

 
www             IN      A       218.45.184.224
blog            IN      A       218.45.184.224
static          IN      A       218.45.184.224

CNAMEでstaticを指定しても良いのですが、CNAMEはいろいろと制限が多いのでAレコードで指定しちゃっています。このドメインでNSレコードやMXレコードを作るわけではないので別にCNAMEでもいいのですが…。

apacheのバーチャルドメイン化

apacheの設定変更でバーチャルドメイン化して複数ドメインを同一サーバで運用します。今回は
blog.kamata-net.com:動的コンテンツ用
static.kamata-net.com:静的コンテンツ用
となります。

/etc/httpd/conf/httpd.confの設定変更を行います。

 
~
NameVirtualHost 192.168.0.xxx:80
~
<VirtualHost 192.168.0.xxx>
KeepAlive Off
ServerAdmin webmaster@kamata-net.com
DocumentRoot /home/httpd/html/wordpress/
ServerName blog.kamata-net.com
ErrorLog logs/kamata-net.com-error_log
TransferLog logs/kamata-net.com-access_log
CustomLog logs/kamata-net.com-access_log combined
CustomLog logs/deflate_log deflate
</VirtualHost>
<VirtualHost 192.168.0.xxx>
ServerAdmin webmaster@kamata-net.com
DocumentRoot /home/httpd/html/wordpress/
ServerName static.kamata-net.com
ErrorLog logs/kamata-net.com-error_log
TransferLog logs/kamata-net.com-access_log
CustomLog logs/kamata-net.com-access_log combined
CustomLog logs/deflate_log deflate
</VirtualHost>

ここでblog.kamata-net.comは動的コンテンツサーバ用の為KeepAlive設定をOFFにしています。

wordpress側の設定変更

wp-config.phpに以下の記述を追記します。

 
define('WP_CONTENT_URL','http://static.kamata-net.com/wp-content');
define('COOKIE_DOMAIN', 'blog.kamata-net.com');

WP_CONTENT_URLをstatic.kamata-net.comに変更することで、画像のURLが
http://blog.kamata-net.com/wp-content/archives/2014/02/aaa.jpg →
http://static.kamata-net.com/archives/2014/02/aaa.jpg
のように変更されます。

合わせてwordpressの「設定」→「メディア」も修正しておきます。
WS000225
ファイルへの完全なURLパスのところにhttp://static.kamata-net.com/archivesと指定します(効いているのか微妙)。

COOKIE_DOMAINではCookieを使うドメインの指定です。blog.kamata-net.comではCookieを使い、static.kamata-net.comではCookieは使わない、という指示になります。

(参考)

Cookie ドメインの設定

一般的でないドメイン設定をしている場合、Cookie 内で WordPress の使うドメインを指定することもできます。例えば静的コンテンツを提供するためのサブドメインを設定している場合などです。WordPress Cookie がサブドメイン内の静的コンテンツへのリクエストの度に送信されるのを防ぐには、Cookie ドメインを非静的ドメインのみに指定します。

wp-config.php の編集 - WordPress Codex 日本語版

wordpress側のコンテンツの移行(書き換え)

ここから先はオプションです。以前投稿した記事では画像のパスがまだblog.kamata-net.com/~になっているはずですが、ここを書き換える必要があります。
まずはWP-DBManagerをインストールしてDBのバックアップを取ってから作業をすることをお勧めします。

Search Regexプラグインをインストールして置換をしていきます。

WS000226

Regexのところにチェックを入れて正規表現で書いていきます。

Search pattern:/src="http:\/\/blog.kamata-net.com\/wp-content\/archives\/(.*?)\.(jpg|jpeg|png|gif|tif|wmv)/
Replace pattern:src="http://static.kamata-net.com/archives/$1.$2

上記のようにして画像や動画などの静的コンテンツへのパスを書き換えます。
必ず「Replace」ボタンで結果を確認してください。「Replace&Save」ボタンを押してしまうと元に戻りません。

本当は/static.kamata-net.com\/wp-content\/archives\/(.*?).!(html)/と表現できれば楽だったのですがなぜか効きませんでした(間違ってるかしら…?)

なぜこのようなことをする必要があるかというと、記事中で他の自分の記事に対してリンクを張っている場合も
http://blog.kamata-net.com/archives/0009999.htmlのようになっており、こちらは引き続き動的ドメインに残しておく必要があるためです。

記事はここまで。

この記事は役に立ちましたか?評価をお願いいたします。
[合計: 0 平均: 0]

広告336px

広告336px

-Article(記事)
-, , , , ,

Copyright© 蒲田ネット , 2017 AllRights Reserved.