Лучший способ Go О кешировании миллионов веб-страниц - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь найти несколько простое решение для двухнедельного кэширования на миллионах страниц контента. Рассматриваемый сайт нажимает MYSQL каждый раз, когда страница попадает, некоторые страницы с более сложными запросами загружаются за 2-3 секунды. Моя конечная цель - уменьшить время загрузки до секунды. Я думал об использовании Memcached, но я хотел бы избежать этого подхода, если это возможно. Я бы предпочел решение, которое сканирует все рассматриваемые страницы и автоматически создает кэш fre sh каждые две недели. Я открыт для всех подходов, включая использование сервиса.

1 Ответ

3 голосов
/ 17 февраля 2020

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.

...