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