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

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

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

Спасибо.

Ответы

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

APC

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

Memcached

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

    Минусы:
  • Медленнее, чем APC

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

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Возьмите источник и прочитайте документацию.