Какие есть сервисы кэширования для сайта?
Нужна альтернатива NGINX|Varnish
* Нужно чтобы можно было удалять записи из кэша запросом BAN
* Нужно сделать общий диск кэша
1. Я сейчас использую NGINX кэш в K8S и настроил там общий диск RWX для нескольких реплик. Икогда перезапускается NGINX или создается новая реплика, он использует уже готовые файлы кэша из общего диска. Но из NGINX выпилили возможность удаления записей по BAN запросу, а мне очень нужно это.
2. В таком случае, я использую Varnish - там есть возможность удалять элементы по запросу, но он использует память для хранения кэша, и как я понимаю, если изменить настройку на использование диска, он создаст файл, и я не знаю ещё как это всё начнет работать с общим RWX диском. Возможно будут блокировки или вылеты, другие глюки. Я ещё не пробовал. NGINX с общим диском вроде бы работает нормально.
Сколько времени прошло, должна же была появиться альтернатива?..
Может есть что-то специально для Kubernetes?
Дополнительно:
proxy_cache_bypass
Насколько я знаю, оно лезет напрямую и следом обновляет запись в кеше. По смыслу очень близко. Разница том, что при отдельном запросе на ban/purge новая версия появится не тут же, а позже, при реальном запросе.
Вот тут ещё статеечка на эту тему
https://habr.com/ru/post/428127/
Комментарии там тоже не пропустите
Кроме того, если очень хочется, реализуйте всё сами. Благо, код и открыт.
Ответы:
proxy_cache_bypass
Насколько я знаю, оно лезет напрямую и следом обновляет запись в кеше. По смыслу очень близко. Разница том, что при отдельном запросе на ban/purge новая версия появится не тут же, а позже, при реальном запросе.
Вот тут ещё статеечка на эту тему - https://habr.com/ru/post/428127/
можно чистить скриптиком, как там предлагается.
Комментарии там тоже не пропустите
proxy_cache_bypass доступна во free,
проверил, proxy_cache_purge в free версии нет, доступна как часть коммерческой подписки
-
проверил, proxy_cache_purge в free версии нет, доступна как часть коммерческой подписки
тогда в чем смысл ответа, если об этом написано в вопросе?
Но из NGINX выпилили возможность удаления записей по BAN запросу, а мне очень нужно это
- grabbee, Смысл в том, что в зависимости от ваших требований, его можно заменить proxy_cache_bypass или скриптом.
То есть именно то что вы просили
должна же была появиться альтернатива?..
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Для кэширования сайта существует множество различных сервисов и инструментов, которые могут помочь ускорить загрузку страниц и улучшить производительность. Ниже я приведу несколько популярных сервисов кэширования, которые могут быть полезными для вашего сайта:
1. Cloudflare: Cloudflare предлагает CDN (Content Delivery Network) и множество других функций, включая кэширование страниц, изображений и других ресурсов. Он также обеспечивает защиту от DDoS-атак и других угроз безопасности.
// Пример настройки кэширования в Cloudflare // Устанавливаем заголовок кэширования на 1 час header("Cache-Control: public, max-age=3600"); |
// Пример настройки кэширования в Cloudflare // Устанавливаем заголовок кэширования на 1 час header("Cache-Control: public, max-age=3600");
2. Varnish: Varnish - это HTTP ускоритель, который кэширует содержимое и ускоряет обработку запросов к серверу. Он может значительно улучшить производительность сайта за счет кэширования динамических страниц.
// Пример конфигурации Varnish для кэширования страницы if (req.url ~ "^/page/") { set req.http.magic-header = "cached"; } |
// Пример конфигурации Varnish для кэширования страницы if (req.url ~ "^/page/") { set req.http.magic-header = "cached"; }
3. Redis: Redis - это высокопроизводительная система управления данными, которая может использоваться для кэширования данных и ускорения доступа к ним. Он поддерживает различные структуры данных и может быть интегрирован с различными языками программирования.
// Пример использования Redis для кэширования данных $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $cachedData = $redis->get('cached_data'); if (!$cachedData) { $cachedData = fetchDataFromDatabase(); $redis->set('cached_data', $cachedData, 3600); } |
// Пример использования Redis для кэширования данных $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $cachedData = $redis->get('cached_data'); if (!$cachedData) { $cachedData = fetchDataFromDatabase(); $redis->set('cached_data', $cachedData, 3600); }
4. Memcached: Memcached - это распределенный кэш, который хранит данные в памяти и обеспечивает быстрый доступ к ним. Он может использоваться для кэширования данных и ускорения работы сайта.
// Пример использования Memcached для кэширования данных $memcached = new Memcached(); $memcached->addServer('localhost', 11211); $cachedData = $memcached->get('cached_data'); if (!$cachedData) { $cachedData = fetchDataFromDatabase(); $memcached->set('cached_data', $cachedData, 3600); } |
// Пример использования Memcached для кэширования данных $memcached = new Memcached(); $memcached->addServer('localhost', 11211); $cachedData = $memcached->get('cached_data'); if (!$cachedData) { $cachedData = fetchDataFromDatabase(); $memcached->set('cached_data', $cachedData, 3600); }
Выбор конкретного сервиса кэширования зависит от потребностей вашего сайта, его структуры и технологий, используемых в разработке. Рекомендуется провести тестирование различных сервисов и выбрать наиболее подходящий для вашего проекта.

Кэширование - это процесс временного хранения данных для быстрого доступа к ним в дальнейшем. Это очень важная технология для оптимизации производительности сайта, так как позволяет сократить время загрузки страницы и уменьшить нагрузку на сервер. Существует множество различных сервисов кэширования для сайтов, каждый из которых имеет свои преимущества и недостатки. Рассмотрим некоторые из них:
1. Memcached - это один из самых популярных сервисов кэширования, который используется многими крупными сайтами, такими как Facebook, Twitter и YouTube. Memcached хранит данные в оперативной памяти сервера, что обеспечивает быстрый доступ к ним. Он поддерживает распределенное кэширование, что позволяет использовать несколько серверов для хранения кэша.
2. Redis - еще один популярный сервис кэширования, который также хранит данные в оперативной памяти сервера. Redis обладает более широким набором функций по сравнению с Memcached, такими как поддержка структур данных (например, списки, хэши, множества) и возможность сохранения данных на диск. Это делает Redis более гибким и мощным инструментом для кэширования.
3. Varnish - это HTTP ускоритель, который также может использоваться для кэширования контента сайта. Varnish работает как обратный прокси-сервер, кэшируя ответы от сервера и предоставляя их клиентам без необходимости обращаться к серверу снова. Он обладает широкими возможностями настройки кэширования и позволяет управлять кэшем с помощью специального языка VCL.
4. CDN (Content Delivery Network) - это сервис, который распределяет контент сайта по серверам, расположенным ближе к конечным пользователям. В процессе доставки контента CDN также может кэшировать данные, что позволяет ускорить загрузку страницы. Популярные CDN-сервисы, такие как Cloudflare, Akamai и Amazon CloudFront, предоставляют широкие возможности по кэшированию и оптимизации производительности сайта.
5. Nginx - это веб-сервер и прокси-сервер, который также может использоваться для кэширования контента. Nginx имеет встроенную поддержку кэширования статического контента, такого как изображения, CSS и JavaScript файлы. Он легко настраивается и обладает высокой производительностью, что делает его отличным выбором для кэширования.
6. Squid - это еще один популярный прокси-сервер, который может использоваться для кэширования контента. Squid поддерживает различные методы кэширования, такие как кэширование по времени, по размеру и по типу контента. Он также обладает широкими возможностями настройки и мониторинга кэша.
Выбор сервиса кэширования для сайта зависит от его специфики, объема трафика и требований к производительности. Некоторые сайты могут использовать несколько сервисов кэширования одновременно для оптимальной работы. Важно правильно настроить кэширование и регулярно мониторить его работу, чтобы избежать проблем с устаревшими данными или неправильным кэшированием.