Как выбрать, что и когда кэшировать данные с помощью ob_start, а не запрашивать базу данных? - PullRequest
1 голос
/ 12 мая 2010

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

Использует ли ob_start() затем ob_get_contents() для кэширования этих частей в файл правильный способ сделать это или есть лучший способ сделать это в PHP5?

Задавая этот вопрос, я пытаюсь ответить на следующие дополнительные вопросы:

  • Как я могу определить правильный подход для кэширования этих данных, не проводя тщательный сравнительный анализ?
  • Имеет ли смысл кэшировать эти части в разных файлах, а затем объединять их вместе по запросам, или я должен повторно запрашивать данные и кэш один раз в минуту?

Я ищу практическое правило для страниц планирования и для ситуаций, когда проведение тестирования неэффективно с точки зрения затрат (я имею в виду, что клиент платит за него недостаточно).

Ответы [ 2 ]

1 голос
/ 16 мая 2010

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

0 голосов
/ 12 мая 2010

Нет, буферизация вывода не имеет ничего общего с кэшированием базы данных.

Но главное правило: оставьте все это в покое, пока не поймете, что сайту действительно нужны улучшения производительности.
Затем выполните профилирование.
И, наконец, устраните узкое место. Скорее всего, это будут не эти вызовы базы данных.

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