Уменьшение нагрузки на MySQL за счет псевдо-кеширования. ________________________________________________________ Рассмотрим пример работы web-приложения в связке с MySQL-сервером Обычно схема работы web-приложения (форум, движек сайта, магазин и т.д.) построена таким образом: 1. page.php при каждом запросе, обращается к MySQL-серверу 2. производится выборка данных из базы 3. полученые данные обрабатываются 4. генерируется html-страница Все работает как часы, доволен админ, довольны посетители сайта. Популярность проекта растет, увеличивается число посетителей и соотвественно заметно увеличивается нагрузка на MySQL-сервер. В определенный момент MySQL-сервер просто не сможет обработать все поступающие запросы. Посетителю вряд ли понравится долгая загрузка страницы, клиент ждать не любит :) Что можно сделать в этой ситуации, т.е. как уменьшить нагрузку на MySQL-сервер? Выход - кеширование полученых данных с MySQL-сервера. Подразумевается кеширование не прокси- сервером и не броузером пользователя, а псевдо-кеширование. Что бы не гонять бесполезно трафик page.php -> MySQL-сервер и обратно, при первом обращении клиента к page.php нужно всего лишь записать, полученые с MySQL-сервера данные во временный файл, установить таймер на N-времени например на (5, 10, 15 и т.д. секунд (подобрать в зависимости от задачи web-приложения)) и сгенерировать страницу. При повторном обращении клиента к page.php, проверить таймер: если от первого обращения к page.php прошло времени меньше чем установленые N-секунд, то считать данные из файла (обращаться к MySQL-серверу не требуется), если времени прошло больше установленых N-секунд таймера, то получить новую порцию данных с MySQL-сервера и перезаписать временный файл. Примерная схема такого web-приложения будет выглядеть так: 1. page.php обращается к MySQL-серверу 2. производится выборка данных из базы 3. полученые данные обрабатываются 4. полученые данные записываются во временный файл 5. устанавливается таймер (програмно) 6. генерируется html-страница После такой модернизации web-приложения, нагрузка на MySQL-сервер будет заметно снижена. статья является собственностью RusH Security Team перепечатка без ссылки на первоисточник запрещена автор: dinggo