Как реализовать кеш HTML для сайта PHP?

Каков наилучший способ реализации кеша для PHP-сайта? Очевидно, что есть некоторые вещи, которые нельзя кэшировать (например, поисковые запросы), но я хочу найти хорошее решение, которое позволит избежать «эффекта digg».

Я знаю, что WP-Cache для WordPress, но я пишу специальное решение, которое не построено на WP. Я заинтересован в написании собственного кеша (если он достаточно прост), или вы могли бы указать мне хорошую, легкую структуру. Я не знаю много Apache, хотя, если бы это была PHP-инфраструктура, тогда это было бы лучше.

Благодарю.

Если прокси-кеш не может быть и речи, и вы обслуживаете полные HTML-файлы, вы получите максимальную производительность, минуя PHP. Изучите работу WP Super Cache .

Небезопасные страницы копируются в папку кэша с аналогичной структурой URL-адреса, как ваш сайт. В последующих запросах mod_rewrite отмечает существование кэшированного файла и служит вместо него. другие директивы RewriteCond используются, чтобы пользователи / зарегистрированные пользователи просматривали прямые запросы PHP, но большинство посетителей будут обслуживаться Apache напрямую.

Вы можете использовать буферизацию вывода для выборочного сохранения частей вашего вывода (тех, которые вы хотите кэшировать) и отображения их следующему пользователю, если он не был достаточно длинным. Таким образом, вы по-прежнему показываете другие части страницы «на лету» (например, настраиваемые поля, личная информация).

Лучше всего использовать кеш-прокси (Squid, Varnish) и обслуживать соответствующие заголовки Cache-Control / Expires вместе с ETags: см . Учебное пособие по кэшированию Mark Nottingham для полного описания того, как работают кеши и как вы можете максимально использовать производительность из кэширующего прокси.

Также проверьте memcached и попробуйте кэшировать ваши запросы к базе данных (или, еще лучше, предварительно отрисованные фрагменты страницы).

Я бы рекомендовал Memcached или APC . Оба являются решениями кэширования в памяти с простыми API-интерфейсами и множеством библиотек.

Проблема с этими 2 заключается в том, что вам необходимо установить их на свой веб-сервер или другой сервер, если это Memcached.

APC

Плюсы:

  • просто
  • Быстро
  • Ускоряет выполнение PHP

Cons

  • Не работает для распределенных систем, каждый компьютер хранит свой кеш локально

Memcached

Плюсы:

  • Быстрая (МОГ)
  • Может быть установлен на отдельном сервере для использования всеми веб-серверами
  • Высоко протестирован, разработан в LiveJournal
  • Используется всеми большими парнями (Facebook, Yahoo, Mozilla)

    Минусы:

  • Медленнее, чем APC

  • Возможная сетевая латентность
  • Чуть больше конфигурации

Я бы не рекомендовал писать свои собственные, там много. Вы можете пойти с дисковым кэшем, если вы не можете установить программное обеспечение на свой веб-сервер, но есть проблемы с расследованием. Один запрос может быть записан в файл, пока другой читает.

Вы действительно можете кэшировать поисковые запросы, даже на несколько секунд до минуты. Если ваш db не обновляется более чем несколько раз в секунду, некоторые задержки будут в порядке.

Механизм шаблонов PHP Smarty ( http://www.smarty.net ) включает довольно продвинутую систему кэширования.

Подробности можно найти в разделе кэширования руководства Smarty: http://www.smarty.net/manual/en/caching.php

Кажется, вы ищете инфраструктуру кэша PHP. Я рекомендую вам систему шаблонов TinyButStrong, которая поставляется с очень хорошим плагином CacheSystem. Это просто, легко, настраивается (вы можете кэшировать любую часть html-файла, который вы хотите), очень мощный ^^

Простое кэширование страниц или частей страниц – класс Pear :: CacheLite. Я также использую APC и memcache для разных вещей, но другие ответы, которые я видел до сих пор, более подходят для более полных и сложных систем. Если вам просто нужно сэкономить немного усилий на перестройке части страницы – Cache_lite с файловым хранилищем вполне достаточен и очень прост в реализации.

Project Gazelle (сайт торрента с открытым исходным кодом) представляет собой пошаговое руководство по настройке Memcached на сайте, которое вы можете легко использовать на любом другом веб-сайте, который вы можете настроить, который будет обрабатывать много трафика.

Захватите источник и прочитайте документацию.