ブログのロードが若干遅い気がしたのでソースコードへの変更ではなく、ネットワークの配信を改善するという対応をしてみました。レンタルサーバはMySQLが共用なのでリードもライトも少し遅めです。レンタルサーバに設置されたWordPressのレスポンス結果をCDNでキャッシュする事で高速にレスポンスする事ができます。
さくらレンタルサーバを高速化したい
さくらVPSやさくらのクラウドを利用していれば、KUSANAGIなどを利用して高速な環境を作る事ができると思いますが、今はレンタルサーバを利用しているので、そちらでの高速化方法について調べてみました。
管理画面から簡単に設定できるコンテンツブーストという機能があるようです。こちらを利用すればさくらのレンタルサーバのスタンダードプランを利用している場合でも簡単に高速化できるようですが、設定に条件があるようでした。
さくらのレンタルサーバのコンテンツブースト機能を利用する条件
- DNSをさくらインターネットのものを利用する必要がある
- wwwなどサブドメインのついたアドレスである必要がある
Google DomainsのDNSを利用しているんですがGoogle Workspaceとの連携をしているなら正直さくらのDNSにしないといけないのはちょっと微妙な気がしました。
さくらインターネットレンタルサーバ コンテンツブースト公式ページ
さくらのクラウドの「ウェブアクセラレータ」CDNを利用する
「さくらのレンタルサーバ」の「コンテンツブースト」とは異なりますが、同じような機能を提供しています。「さくらのレンタルサーバ」のスタンダードプランを利用している方は、設定にネットワーク知識が必要ですがこちらの方が安くなるようです。
累計の転送量が500GBまで無料で利用できるようです。画像や動画を配信する場合は結構あっという間という事もあるかもしれません。
さくらインターネット さくらのクラウド 高速安定CDN ウェブアクセラレター公式ページ
さくらのクラウドのアカウントがまず必要となります。既にお持ちのsakuraアカウントか新しく新規登録してみてください。僕はクライアントワークで技術選定する時にテストで使ってみた関係で、アカウントを持っていましたのでそちらを利用しました。
コントロールパーネルの「ウェブアクセラレーター(CDN)」からを選択
こちらの画面からCDNの新規作成を行います。スクロールすると必要入力項目が現れます。
デフォルトキャッシュタイムはそんなにアクセスないサイトだと長めの方がよいかなと思い、604800秒に設定しています。
キャッシュをコントロールするコードをWordPressに追加
テーマファイルの 「wp-content/themes/今利用してるテーマフォルダ/functions.php」のところに以下のコードを追加して設定します。
とりあえず仮で考えたコードですが、管理画面からプレビューをした時にキャッシュが効いてしまっていたので、キャッシュしないように設定しました。TOPやアーカイブページ(月ごとの記事一覧ページ)などはキャッシュの時間を短くするように設定してます。
function cdn_control() {
// previewはキャッシュしないようにする
if(!empty($_GET['preview'])) {
header( 'Cache-Control: no-store, no-cache, must-revalidate' );
header( 'Cache-Control: post-check=0, pre-check=0', FALSE );
return;
}
// TOPと記事ページではキャッシュの時間を変える
if (is_home() || is_front_page() || is_archive()) {
header('Expires: ' . gmdate( 'D, d M Y H:i:s', time() + 18000 ) . ' GMT');
header('Cache-Control:public, max-age=18000');
} else {
header('Expires: ' . gmdate( 'D, d M Y H:i:s', time() + 604800 ) . ' GMT');
header('Cache-Control:public, max-age=604800');
}
}
add_action('template_redirect', 'cdn_control');
さくらのクラウド 高速・安定CDN ウェブアクセラレータの設定調整
ブログの更新頻度によってキャッシュをキープする時間を設定すると良いと思います。頻繁に更新する場合はなかなか反映されなくて煩わしくなってしまうかもしれませんが、そんなに毎日や何時間おきなどに更新しないという事であればできるだけ長いキャッシュ時間を設定した方がキャッシュを利用してレスポンスを返せるタイミングが増えてよりウェブアクセラレータCDNの効果を得やすくなります。
僕のブログは1週間に1回更新するかしないかと言った感じなので5日( 432000秒 )に設定してみていますが、キャッシュを利用してユーザにブログを表示できた実績は44%ほどのようです。ウェブアクセラレータのコントロールパネルから確認できます。
さくらの高速・安定CDN ウェブアクセラレータを利用する事でのメリット・デメリット
メリット
- ユーザへの表示が早くなる(そのために設定してる)
- WordPressの管理画面も負荷が減るので高速化される
WordPressが稼働してるレンタルサーバへのアクセスをCDNによって減らせればレンタルサーバやデータベースへの負荷も減り管理画面へのアクセスが快適になります。
デメリット
- 記事を更新したらTOPページと記事詳細ページのCDNキャッシュを削除する必要がある
- 予約投稿の反映が予約時間に反映できない
主にTOPページと更新した記事ページを反映する処理が必要です。本当は月々アーカイブなどやタグページも対応した方が良いかもしれませんが最低限の対応でTOPとアーカイブページだけキャッシュを少し短めにとっています。
さくらのウェブアクセラレータを1ヶ月間使ってみて
正直アクセスがもっと増えてからやればいい施策だと思っていたのでタイミング的に微妙ではあったのですが早めにやって良かったです。
ユーザへの表示の高速化が簡単にできました。この方法だとPHPの高速化などをしなくても良いのでお金をかけた力技感がありますが、管理画面が快適になったのは記事を書くモチベーションも高まってやってみてよかったです。そちらも早くなると思っていなかったのでやってよかったなと思いました。
画像はWordPressのJetpackプラグインのCDNを利用しているのでだいぶトラフィックが抑えられていますが、スマートフォン向けに画像を縮小したりした方がもう少しアクセスが早くなるかなという感じがありました。
気になる方はぜひぜひ試しに導入してみてください。
さくらインターネット さくらのクラウド 高速安定CDN ウェブアクセラレター公式ページ