導入
このブログのキャッチコピーは「未来の自分のための技術メモ、時々あなたのためのヒント。」ですが、今回はあなたのWebサイトの表示速度を改善する、非常に効果的な「ヒント」です。
「自社のサイト、最近なんだか表示が遅いな…」
「アクセスが増えると、データベースサーバーが重くなってしまう…」
こうした悩みの多くは、データベースへのアクセスのしすぎが原因です。この記事では、**「Memcached(メムキャッシュディー)」**という技術を使って、このデータベースの負荷を劇的に減らし、Webサイトを高速化する基本的な方法を解説します。
なぜキャッシュが必要? レストランの「作り置き」に例える
毎回お客さんが注文するたびに、一から食材を切って調理を始めていたら、レストランは大変ですよね。人気のメニューは、ある程度「作り置き(仕込み)」をしておくことで、素早く提供できます。
Webサイトにおけるキャッシュも、この「作り置き」と全く同じ考え方です。
- データベース: 食材が保管されている「冷蔵庫」
- Webアプリケーション: 注文を受けて調理する「シェフ」
- Memcached: 調理済みの料理を一時的に置いておく「保温カウンター」
毎回「冷蔵庫」に食材を取りに行くのではなく、「保温カウンター」によく出る料理を置いておくことで、お客さん(サイト訪問者)を待たせずに素早く料理を提供できる、というわけです。
Memcachedの導入3ステップ
それでは、実際にサーバーにMemcachedを導入していきましょう。
Step 1: Memcachedをインストールする
まずは、yum
(またはdnf
)コマンドを使って、Memcached本体をサーバーにインストールします。
sudo yum install memcached
Step 2: PHPから使えるようにする
次に、PHP(シェフ)がMemcached(保温カウンター)を使えるように、通訳役となるPHPの拡張機能をインストールします。
# PECLを使ってphp-memcachedをインストール
sudo pecl install memcached
インストール後、php.ini
という設定ファイルにextension=memcached.so
という一行を追記し、Webサーバー(Apacheなど)を再起動します。
Step 3: Memcachedを起動する
最後に、Memcachedサービスを起動し、サーバーを再起動しても自動で立ち上がるように設定します。
# memcachedサービスを起動
sudo systemctl start memcached
# OS起動時に自動で起動するように設定
sudo systemctl enable memcached
PHPでの基本的な使い方
Memcachedの使い方は非常にシンプルで、「キー(料理名)」と「バリュー(料理そのもの)」をセットで保存し、後でキーを指定して取り出すだけです。
簡単なPHPコードの例:
<?php
// Memcachedサーバーに接続
$mc = new Memcached();
$mc->addServer('127.0.0.1', 11211);
$key = 'top_page_article_list'; // キー(キャッシュの名前)
// 1. まずはキャッシュを探しに行く
$articles = $mc->get($key);
// 2. もしキャッシュがなければ(作り置きがなければ)
if (!$articles) {
echo "(キャッシュがなかったので、DBからデータを取得しました)\n";
// DBから重いデータを取得する処理...
$articles = get_heavy_data_from_database();
// 3. 取得したデータを、10分間だけキャッシュに保存する
$mc->set($key, $articles, 600); // 600秒 = 10分
} else {
echo "(キャッシュがあったので、DBにはアクセスせず高速に表示しました)\n";
}
// 取得したデータを使ってページを表示
var_dump($articles);
// --- 本来DBにアクセスする重い処理の代わり ---
function get_heavy_data_from_database() {
// ここで時間がかかるDBクエリが実行されると仮定
sleep(2);
return ['article1', 'article2', 'article3'];
}
?>
このコードを実行すると、初回は2秒かかりますが、2回目以降(10分以内)はキャッシュが使われるため、一瞬で結果が返ってきます。
まとめ
今回は、Memcachedを使ってWebサイトの表示を高速化する基本的な方法をご紹介しました。
- アクセスの多いページ
- 更新頻度の低いデータ
- 生成に時間がかかる計算結果
こうしたものを積極的にキャッシュしていくことで、ユーザー体験を向上させ、サーバーの負荷を下げることができます。
この記事が、あなたのサイトのパフォーマンスを改善する「ヒント」になれば幸いです。
コメント