2011-02-10 4 views
1

Мы разрабатываем стратегию кэширования для сильно используемого веб-сайта. Сайт состоит из сочетания динамического и статического контента. В интерфейсе находится PHP, средний уровень - Tomcat и mysql на обратной стороне.Стратегия кэширования для сильно используемого веб-сайта

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

Учитывая ожидаемый объем трафика, ясно, что нам нужна всеобъемлющая стратегия кэширования. Таким образом, мы рассматриваем следующие варианты:

  1. Положите Squid или лак перед PHP и настроить его кэшировать все общественное содержание и даже заказать форму представления о клиенте.
  2. Использование memcached с помощью PHP для кэширования фрагментов страницы (например, самых популярных продуктов)
  3. Реализуйте кэширование в среднем ярусе/tomcats (т.е. перед возвратом содержимого на веб-серверы попробуйте извлечь его из локального кеша, такого как ehcache)
  4. Используйте кэш уровня PHP, такой как Zend Cache, и храните там фрагменты страниц. Это близко ко второму варианту, который я упомянул, но он встроен в структуру Zend.

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

Итак, вопрос в том, стоит ли добавить кэш фронта, например, лак, или просто использовать Zend Cache внутри?


Другой вариант, который я забыл упомянуть о том, чтобы использовать кэш PHP уровня, как Zend Cache и хранить там фрагменты страниц. Это близко ко второму варианту, который я упомянул, но он встроен в структуру Zend.

Итак, вопрос в том, стоит ли добавить кэш фронта, например, лак, или просто использовать Zend Cache внутри?

Еще раз спасибо, Филопатор.

+0

Независимо от того, какую стратегию вы планируете использовать, просто имейте в виду, что наличие страниц кэша Varnish означает, что вы можете полностью избавиться от PHP полностью, что само по себе может иметь большое значение для того, сколько трафика вы сможете обработать. – ZoFreX

ответ

1

Я сделал довольно много проектов, как это и установлено, что:

  • создания (полное) заказное решение трудно и дорого. К счастью, вы нашли Squid/Varnish, Memcache и EHCache
  • Динамическое поведение сайтов сильно отличаются, и вы знаете, ваш сайт лучше, так что имеет смысл разработать конкретную стратегию кэширования
  • имеет смысл использовать несколько слоев кэша , Однако это затруднит поведение вашего сайта, поэтому вы должны сообщить всем, кто связан с сайтом (например, бизнес), что-то об этом и рассказать об этом своим инженерам.
  • Подумайте, как вы собираетесь отлаживать проблемы. например добавьте заголовки, указывающие на свежесть обслуживаемых данных, позвольте определенным людям очистить или избежать кеш
  • Регулярно проверяйте, как работают разные уровни кеша (например, используйте плагины nagios для ваших лаковых машин).
  • Мера, где ваши проблемы производительности, прежде чем строить какие-либо тайники :)
  • кэширования некоторых объектов в течение только короткое время уже может быть очень значительным улучшением

В эти дни я люблю Varnish много: это отдельный слой, который не загромождает код Java/PHP, он быстрый и очень гибкий. Недостатком является то, что конфигурация в vcl немного сложна.

Обычно я использую ehcache + в памяти, чтобы избежать латентности (например, запросов к базе данных или запросов на обслуживание) с небольшими наборами данных и memcached, когда есть много данных, и кэш должен совместно использоваться несколькими узлами.

+0

Большое спасибо за ответ. – Philopator

+0

Любая помощь здесь? :) http://stackoverflow.com/questions/35632607/is-the-http-verb-purge-idempotent –