В последнее время я кэширую выходной буфер страниц, но теперь я хочу кэшировать значения переменных.
У меня есть PHP-файл, который выполняет кучу MySQL-запросов, а затем заполняет переменные различными данными из этих запросов.
Некоторые из этих переменных никогда не изменятся, но некоторые из них будут меняться довольно часто. Как я могу кэшировать определенные переменные таким образом? Я использую кеширование на основе файлов, если это помогает.
Yup, файловое кэширование – это вариант.
Существуют также другие варианты, такие как memcache и APC
Вы также должны взглянуть на них. Если ваше приложение накладывает большую нагрузку на ваш сервер MySQL, и если ваша БД уже оптимизирована, кеширование – это шаг, который вы можете предпринять.
Я не знаю, как вы структурировали свой текущий кеширующий материал, поэтому это всего лишь короткий шаблон о том, как вы можете сохранить любую переменную (до тех пор, пока ее контент будет сериализован) в файл.
file_put_contents($filename, serialize($variable));
Вы можете сбрасывать любую переменную (включая массив) с помощью сериализации , а инверсия – несериализуется .
Сбрасывание в файл было бы совершенно бесполезным решением для кеша, вы можете рассмотреть использование memcache, который может хранить любую переменную в памяти, но требует некоторой работы на стороне сервера.
Я нахожу, что местная mysql с таблицами MEMORY также может быть полезна …
Поскольку вы спрашивали о кешировании на основе файлов, как memcache
и APC
являются параметрами, хотя я бы, конечно, рекомендовал их в тех случаях, когда хранящиеся данные не слишком велики.
Для кэширования на основе файлов я бы рекомендовал использовать структуру кэширования. Например, вы можете использовать Zend_Cache
из Zend Framework
. Он позволяет сохранять результаты запроса в файлах с помощью красивого объектно-ориентированного интерфейса. Кроме того, у вас есть много вариантов, таких как валидация и сериализация. Существуют и другие структуры кэширования.