Кеширование MySQL запросов - PullRequest
       46

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

8 голосов
/ 01 сентября 2008

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

Ответы [ 5 ]

11 голосов
/ 01 сентября 2008

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

3 голосов
/ 01 сентября 2008

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

1 голос
/ 01 сентября 2008

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

Механизмы кэширования, подобные приведенным выше, позволяют вам решать, на основе запроса по запросу, как долго должны кэшироваться данные. Допустим, у вас есть данные в заголовке, которые будут меняться нечасто, вы можете проверить, находится ли он в данный момент в кэше - если да, вернуть его, в противном случае выполнить запрос и поместить его в кэш с временем жизни N, поэтому для N секунд каждая загрузка страницы будет извлекать данные из кэша, не приближаясь к MySQL. После этого вы можете свободно извлекать другие данные из базы данных «вживую» по мере необходимости, минуя кеш.

1 голос
/ 01 сентября 2008

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

0 голосов
/ 10 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...