Кэширование запросов MySQL

есть ли простой способ кэширования MySQL queries на PHP или в противном случае, есть ли небольшой набор классов, который кто-то написал и сделал доступным, который это сделает? Я могу кэшировать целую страницу, но это не будет работать как некоторые изменения данных, но некоторые нет, я хочу кэшировать часть, которая не делает.

5 ответов


Это отличный обзор того, как кэшировать запросы в MySQL:


можно использовать Кэш Zend кэшировать результаты ваших запросов среди прочего.


Я думаю, что размер кэша запросов 0 по умолчанию выключен. Редактировать мой.cnf файл, чтобы дать ему хотя бы несколько мегабайт. Никаких изменений PHP не требуется:)


Это может быть полным перебором для того, что вы пытаетесь, но посмотрите на eAccelerator или memcache для. Если у вас есть запросы, которые будут регулярно меняться, и запросы, которые не будут, вы можете не хотеть, чтобы все ваши запросы БД кэшировались в течение того же периода времени mysql.

механизмы кэширования, подобные приведенным выше, позволяют вам решать, на основе запроса по запросу, как долго данные должны кэшироваться. Скажем, у вас есть данные в заголовке, которые изменятся нечасто вы можете проверить, находится ли он в настоящее время в кэше - если да, верните его, иначе сделайте запрос и поместите его в кэш со временем жизни N, поэтому в течение следующих N секунд каждая загрузка страницы будет извлекать данные из кэша, не приближаясь к MySQL. Затем вы можете вытащить другие данные "в реальном времени" из БД по мере необходимости, минуя кэш.


Я бы рекомендовал весь маршрут кэширования страницы. Если некоторые из данных изменяются, просто поместите маркеры / заполнители вместо динамических данных. Кэшируйте всю страницу с этими токенами на месте, затем опубликуйте обработку токенов для кэшированных данных для токенов. Таким образом, теперь у вас есть кэшированная страница содержит динамический контент.