методы кеширования в php? - PullRequest
1 голос
/ 20 января 2011

Какие методы кэширования доступны в php?

Кэширование вывода HTML
Кэширование некоторых переменных

Было бы здорово реализовать более одного метода кэширования, так что янужны они все, все доступное там (я кеширую сейчас файлы, есть еще идеи?)

Ответы [ 3 ]

3 голосов
/ 20 января 2011

Большинство сборок PHP не имеет встроенного механизма кэширования. Однако существуют расширения, которые могут позаботиться о кэшировании за вас.

Посмотрите на APC или MemCache

0 голосов
/ 20 января 2011

Если вы используете фреймворк, то большинство из них имеют какой-то механизм кэширования, который вы можете использовать, например. Zend_Cache Zend Framework. Если вы не используете фреймворк, то можно использовать APC или Memcache в качестве упомянутого Pelle ten Cate. Правильный подход к использованию зависит от вашей ситуации, у вас есть веб-сайт или приложение, работающее не только на сервере, и нужно ли обмениваться информацией в кэше между этими серверами? (если да, то что-то вроде memcache - ваш ответ, или, может быть, база данных или распределенное решение NoSQL, если вы чувствуете себя смелым). Если ваш код выполняется только на одном сервере, вы можете попробовать что-то простое, например, сериализовать переменные и записать их на диск, а затем при каждом запросе проверять, существуют ли файлы, если это так, открывать и десериализовать строку в переменная вам нужна. Хотя это того стоит, только если потребуется много времени для генерации varaible нормально, (например, дольше, чем нужно для открытия, чтения, десериализации файла на диске)

Для кеширования HTML вы, как правило, получаете наибольшую отдачу от использования прокси-сервера, такого как Varnish или Squid, чтобы сделать это для вас, но я понимаю, что это может быть не вариант для вас. Если это не так, вы можете записать на диск подход, о котором я упоминал выше, и сохранить фрагменты HTML в файлы. поищите в руководстве по PHP ob_start и его друзей.

0 голосов
/ 20 января 2011

Поскольку каждый запуск PHP начинается с нуля при запросе страницы, между вызовами ничего не сохраняется, что делает кеширование спорным.

Что ж, это базовое представление.Конечно, есть способы реализовать кэширование, вроде - и некоторые пакеты и расширения делают это (например, Zend Extensions и APC).Тем не менее, вы должны очень внимательно посмотреть, действительно ли это улучшает производительность.Другие методы, такие как memcache (для результатов БД) или переключение с PHP на, например, Java, часто дают лучшие результаты.

Вы можете хранить переменные в $ _SESSION, но вы не должны хранить там больший HTML.

Пожалуйста, проверьте, что вы на самом деле пытаетесь сделать.«Кэширование байт-кода» (т. Е. Экономия времени разбора PHP) должно выполняться исполняемым файлом PHP времени выполнения.Для кэширования пар запросов / ответов в базе данных (SQL) существует memcache .Кэширование вывода HTML может быть выполнено , но часто это не очень хорошая идея.

См. Также более ранний ответ на аналогичный вопрос .

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