Вопрос

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

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

Спасибо.

Это было полезно?

Решение

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

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

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

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

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

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

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

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

БТР

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

Мемкеш

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

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

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

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

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

Шаблонизатор 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 с файловым хранилищем вполне достаточен и очень прост в реализации.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top