Вопрос
Есть ли простой способ кэширования MySQL queries
в PHP
или, в противном случае, есть ли небольшой набор классов, который кто-то написал и сделал доступным, который это сделает?Я могу кэшировать целую страницу, но это не будет работать, так как некоторые данные изменяются, а некоторые нет, я хочу кэшировать ту часть, которая этого не делает.
Решение
Это отличный обзор того, как кэшировать запросы в MySQL:
Другие советы
Вы можете использовать Zend Cache для кэширования результатов ваших запросов. среди прочего.
Я думаю, что размер кэша запросов по умолчанию равен 0, что отключено. Отредактируйте ваш файл my.cnf, чтобы он имел как минимум несколько мегабайт. Не нужно никаких изменений PHP:)
Это может быть излишним из-за того, что вы пытаетесь сделать, но взгляните на eAccelerator или memcache . Если у вас есть запросы, которые будут регулярно меняться, и запросы, которые не будут изменяться, возможно, вы не захотите, чтобы все ваши запросы к базе данных кэшировались в течение одинакового промежутка времени с помощью mysql.
Механизмы кэширования, подобные вышеперечисленным, позволяют вам на основе запроса к запросу определять, как долго должны кэшироваться данные. Допустим, у вас есть данные в заголовке, которые будут меняться нечасто, вы можете проверить, находится ли он в данный момент в кэше - если да, вернуть его, в противном случае выполнить запрос и поместить его в кэш с временем жизни N, так что для следующего N секунд каждая загрузка страницы будет извлекать данные из кэша, не приближаясь к MySQL. После этого вы можете извлекать другие данные «в прямом эфире». из БД по мере необходимости, минуя кеш.
Я бы порекомендовал весь путь кеширования страниц. Если некоторые данные изменяются, просто поместите токены / заполнители вместо динамических данных. Кэшируйте всю страницу с этими токенами на месте, затем постобработайте токены для кэшированных данных для токенов. Таким образом, теперь у вас есть кэшированная страница, которая содержит динамическое содержимое.