MySQL をデータベースとして使用する VPS で Web サイトをホストする場合、典型的なリクエストは次のようになります。
- クライアントは、VPS で実行されている Web サーバーにリクエストを送信します
- Web サーバー内で実行されているスクリプトは、データベース クエリを作成します。
- データベースはクエリ結果を返します
- スクリプトは結果をフォーマットして出力します
- 結果はブラウザ (クライアント) に表示されます
最初に Web サーバーを経由せずにリクエストをデータベースにヒットさせる方法はありません。
VPS の負荷を軽減したい場合は、スクリプトの実行を高速化できます。ほとんどの Web アプリケーションで最も時間がかかるのは、データベース クエリを実行して結果を待つことです。多くの場合、memcachedのようなメモリ内キャッシュを使用して VPS でデータベース クエリの結果をキャッシュすることで、これを回避できます。ただし、メモリ設定には注意してください。サーバーのメモリは非常に少ないため、最大割り当てメモリを十分に低い設定に設定してください。
以下は、SELECT クエリの結果をキャッシュする基本的な例です。
$cache = new Memcached();
$cache->addServer('localhost', 11211);
$article_key = "article[$article_id]";
$article = $cache->get($article_key);
if ($article === FALSE) {
$statement = $conn->prepare("SELECT * FROM articles WHERE id = :id");
$statement->exec(array('id' => $article_id));
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
if (count($result) === 0) {
// return a 404 status
}
$article = $result[0];
$cache->set($article_key, $article);
}
// display the article