используйте сервер MySQL в качестве "кэша"
Я знаю, что это странный вопрос, но у меня есть 2 сервера, один vps, а другой - хост mysql. Теперь моя проблема в том, что я хочу попытаться снизить нагрузку на vps, так как это стартовый 128 Мб vps.
Небольшая проблема, что потребуется для того, чтобы сервер MySQL работал так, как если бы это был кэш, у меня нет доступа ни к чему на сервере MySQL, кроме предоставленных баз данных.
Потребуется ли для этого отдельная база данных? пожалуйста, скажите мне, если это возможно, я могу попросить моего хозяина добавить другая база данных.
Спасибо!
1 answers
Если вы размещаете веб-сайт на VPS, который использует MySQL в качестве базы данных, типичный запрос выглядит следующим образом:
- клиент отправляет запрос на веб-сервер, работающий на вашем VPS
- ваш скрипт, запущенный на веб-сервере, выполняет запрос к базе данных
- база данных возвращает результаты запроса
- ваш скрипт форматирует и печатает результаты
- результаты отображаются в браузере (клиенте)
Нет способа отправить запрос в базу данных не проходя сначала через веб-сервер.
Если вы хотите уменьшить нагрузку на VPS, вы можете ускорить выполнение своего скрипта. Наиболее трудоемкой частью большинства веб-приложений является выполнение запросов к базе данных и ожидание результатов. Во многих случаях вы можете избежать этого, кэшируя результаты ваших запросов к базе данных на VPS, используя кэш в памяти, такой как memcached. Однако будьте осторожны с настройками памяти - обязательно установите максимальный объем выделенной памяти до достаточно низкого значения, потому что у вашего сервера очень мало памяти.
Вот простой пример кэширования результата запроса 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