Каков наилучший способ реализации кеша для 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.
Плюсы:
Cons
Плюсы:
Используется всеми большими парнями (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 на сайте, которое вы можете легко использовать на любом другом веб-сайте, который вы можете настроить, который будет обрабатывать много трафика.
Захватите источник и прочитайте документацию.