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

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

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

Спасибо.

Вы заинтересованы в использовании фреймворка или библиотек или просто хотите узнать, как реализовать собственное решение для кэширования?

user4903 11.09.2008 00:26

Du вы хотите кешировать полные страницы или только части страниц?

BlaM 11.09.2008 18:33

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

different 11.09.2008 22:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
12
3
7 843
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

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

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

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

Не уверен, почему вы перешли на пониженный уровень - это вполне возможный способ сделать это.

ceejayoz 11.09.2008 01:39

Спасибо. Да я и сам не понимаю. Это очень полезно в нескольких ситуациях, когда другие готовые решения для кеширования не применимы.

Pedro 13.09.2008 15:09

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

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

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

Я бы порекомендовал Memcached или БТР. Оба являются решениями для кэширования в памяти с чрезвычайно простыми API и множеством библиотек.

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

БТР

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

Memcached

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

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

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

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

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

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

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

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

Ссылка на документацию и исходник мертва

barbsan 23.08.2019 12:26
Ответ принят как подходящий

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

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

Другие вопросы по теме