Memcached или Redis - это вполне жизнеспособные решения для хранения "проецируемых форматов данных", для которых потребуется JOIN
с, GROUP BY
с или ORDER BY
с в MySQL.
Однако, даже при доступе к кешам, таким как Memcached или Redis, доступ к коду все равно необходим. В больших масштабах для больших объемов данных среда выполнения PHP и ваш веб-сервер могут стать узким местом.
Varni sh на помощь
Вы упомянули термин pages , что означает, что вы фактически пытаетесь кэшировать полные страницы, а не только наборы данных. В этом случае я бы посоветовал вам взглянуть на Varni sh.
Varni sh - обратный кеширующий прокси, специально созданный для кэширования страниц в огромных масштабах. Вы можете использовать сканер для прогрева кеша и использовать Cache-Control
заголовки для управления Time To Live объектов в кеше.
Вот пример, который устанавливает TTL
для ответа HTTP на 2 недели :
Cache-Control: public, s-maxage=1209600
Вы также можете установить TTL
намного выше и затем сделать недействительными указанные c объекты в кеш по , очистка им.
Кэширование миллионов объектов
Varni sh прекрасно может кэшировать миллионы объектов, возможно, даже миллиарды. Осуществимость в первую очередь зависит от размера ваших HTTP-ответов и объема памяти вашей системы.
По умолчанию Varni sh сохраняет свои объекты в памяти. Настраиваемый параметр в Varni sh - это объем выделенной памяти. Вы можете легко выделить 80% памяти вашей системы процессу Varni sh. Затраты на хранение объекта в кэше составляют всего 1 КБ на объект.
Если ваши кэшированные объекты представляют собой просто текст, проблем не должно быть. Если это двоичные данные (например, изображения), то вы можете довольно быстро исчерпать память.
Недостаточно памяти: «Механизм LRU гарантирует, что когда кэш будет заполнено, Наименее недавно использованные объекты удалены для освобождения места.
Заключение
Varni sh стало де-факто стандарт для кэширования страниц. руководство пользователя на веб-сайте - отличный ресурс, чтобы быстро узнать, как установить и настроить Varni sh.