Как справиться с кэшированием огромных страниц с помощью Smarty 3 - PullRequest
0 голосов
/ 07 февраля 2012

В настоящее время я работаю над проектом с миллионами динамических страниц. Содержимое этих страниц берется из базы данных, и, конечно, база данных слишком большая со многими таблицами. Поскольку содержимое этих баз данных не будет часто меняться и для уменьшения ненужной нагрузки на сервер для соединений и запросов MySQL, я реализовал кэширование Smarty продолжительностью семь дней или месяц в зависимости от типа контента.

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

Итак, кто-нибудь может рассказать мне о проблемах производительности при наличии миллионов кэшированных страниц в одном каталоге? Или как мне управлять хранением этих кэшированных файлов? Или как правильно использовать Smarty Caching для огромного количества страниц?

Ответы [ 3 ]

0 голосов
/ 07 февраля 2012

Возможно, вы захотите использовать Varnish в качестве обратного прокси-кэша. Он идеально подходит для кэширования множества статических страниц.

0 голосов
/ 19 мая 2013

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

Однако существует проблема с последней версией smarty (3.1.13 на момент написания этого ответа) (см. Обсуждение на форуме smarty ). При очистке кеша для определенного идентификатора кеша или группы smarty считывает все файлы один за другим, что занимает некоторое время для удаления одного кеша.

0 голосов
/ 07 февраля 2012

обслуживать ваши динамические страницы HTML-контента непосредственно пользователю. Вы можете сделать это по-разному. Есть слишком много способов сделать это, но у вас есть миллионы страниц, а затем примените эту процедуру.

  1. Когда любой пользователь приходит первым, проверяется, существует ли кеш для этой страницы
  2. Если нет, то кеш генерирует и обслуживает страницу
  3. и по истечении срока действия файла кэша вы можете заново сгенерировать этот файл кэша.

Основанная библиотека, которую я могу вам предложить, это PEAR cacheLiet, или это очень просто, вы можете написать свой собственный код. Но преимущества использования PEAR cacheLite заключаются в том, что он имеет много драйверов, таких как файлы, базы данных и другие системы кэширования.

Для кэширования каталогов вы используете разные файлы в зависимости от категорий вашего сайта или тегов, которые есть у вашего сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...