Есть ли способ использовать Redis в качестве хранилища для Http-кэша в Symfony 6.2
В общем-то, все уже описано в заголовке. Есть необходимость использовать Redis в качестве хранилища для http_cache в приложении под Symfony 6.2.
Сконфигурировать такое поведение в framework.yaml по дефолту не представляется возможным, т.к. доступны следующие опции для ключа http_cache:
#0 5.631 !! Unrecognized option "cache_provider" under "framework.http_cache". Availabl
#0 5.631 !! e options are "allow_reload", "allow_revalidate", "debug", "default_ttl", "
#0 5.631 !! enabled", "private_headers", "stale_if_error", "stale_while_revalidate", "t
#0 5.631 !! erminate_on_cache_hit", "trace_header", "trace_level".
Ранее, существовал BazingaCacheExtraBundle, который помогал решить данную проблему, однако, на данный момент дропнут правообладателем, либо же доступ закрыт.
Если углубиться более детально в проблему, то имеется n-ое кол-во подов в k8s, соответственно, каждый под генерирует свой http_cache в файловой системе.
Хотелось бы добиться такого поведения, чтобы при обращении к первому поду генерился кэш, а остальные уже могли его использовать.
Какой профит:
- Используем меньше дискогого пространства.
- Увеличиваем hit rate захвата кэша.
P.S. Шарить дисковое пространство между подами не является возможным, имеется явное ограничинение на это.
UPD: Как вариант, видится написать свою имплементацию vendor/symfony/http-kernel/HttpCache/StoreInterface-a.
Ответы (2 шт):
Может это устроит https://nginx.com/resources/wiki/modules/redis в качестве альтернативы? Нашел ещё такое, но адаптер для Redis придется искать отдельно/реализовать самостоятельно
Реализовал http-cache в redis самостоятельно (production ready решение, протестировано, живет отлично).