Кеширование данных в PHP - PullRequest
       10

Кеширование данных в PHP

8 голосов
/ 29 января 2010

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

Мне просто интересно, лучше ли писать и читать HTML прямо в файл или, возможно, создать что-то вроде файла YAML с разделителем для разделения записей, а затем обернуть его в HTML с помощью функции?

Я думаю, что это позволит использовать пользовательские параметры (например, количество отображаемых записей) к запросу.

Любые советы / предложения приветствуются.

Спасибо.

Ответы [ 4 ]

2 голосов
/ 29 января 2010

Используйте любой из них для кэширования бэкэндов:

и использовать Zend_Cache для унифицированного интерфейса к ним

Будет ли использоваться полное или частичное кэширование страниц, зависит от ваших конкретных вариантов использования Как правило, ваше приложение будет иметь смесь обоих.

1 голос
/ 29 января 2010

Вы можете реализовать кэширование в нескольких местах в вашем приложении:

  • Вы можете реализовать условный GET (заголовки ETag и Last-Modified HTTP)
  • выполняет кэширование данных с помощью упомянутых решений ( Cache_Lite , Zend_Cache , APC ) с несколькими бэкэндами (файл, memcached , общий доступ память)
  • вы можете кэшировать файлы шаблонов, как вы сказали ( Smarty )
1 голос
/ 29 января 2010

Хотя я никогда не использовал его лично, есть пакет PEAR для кэширования.Рассмотрите это среди других опций, таких как Zend_Cache.

0 голосов
/ 29 января 2010

Возможно, вы захотите взглянуть на Zend Cache
http://framework.zend.com/manual/de/zend.cache.html

Я обычно храню результаты SQL-запросов где-то (в зависимости от того, что вы ищете, т.е. иногда кэширует их в $ _SESSION ok (данные, относящиеся к пользователю), иногда это не так (большие наборы результатов для не зависящих от пользователя запросов) и тогда мой класс просто проверяет, существует ли кеш и продолжает ли он соответственно.

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