Как проксировать и кешировать статику на длительный период?
Есть некий удаленный сервис, по функционалу похож на каталог товаров. У него есть АПИ благодаря которому мы можем выводить этот список товаров на нашем проекте. Но вот незадача, удаленный ресурс частенько падает.
Кешировать данные товаров через АПИ мы научились, и по факту, на нашем проекте работаем с кешированными данными. Но вся беда в картинках каждого товара. Как только падает удаленный сервис, у нас пропадают картинки товаров, что очень сильно сказывается на юзабилити проекта, и вообще выглядит убого.
Для понимания объемов. Товаров в каталоге около 10000. Картинок у каждого в среднем 20. Плюс 3 размера каждой картинки, итого около 600 000 различных изображений. Это около 80ГБ данных. Список товаров динамичен, т.е. товары могут добавляться, могут удаляться. Но URL каждой картинки уникален, т.е. ситуации что по такому то URL картинка вдруг изменилась, быть не может.
Есть идея - сделать php скрипт проксирующий картинки с сервиса, попутно складывая их к нам на сервер, и дальше отдавая их nginx-ом напрямую. В принципе это реализуемо. Но честно сказать, мне бы очень хотелось исключить php и вообще какую бы то ни было динамику в этом месте.
Чисто теоретически возможно ли средствами nginx сделать что то подобное? Или Varnish? Какой из них мне подойдет больше?
Идея у меня в общих чертах следующая - для статики прописать в качестве бекэнда удаленный сервис, и время кеша поставить допустим месяц. Но тут встает проблема, если упадет сервис, возможно ли заставить nginx продолжать отдавать устаревший кеш?
Или все же выбросить дурные мысли из головы, и сделать, как я говорил, скрипт. Опять же встает вопрос, как удалять устаревшие картинки. Т.е. в идеале бы удалять картинки из нашего хранилища, к которым не обращались допустим месяц.
В общем подскажите пожалуйста в какую сторону мне копать.
Ну если вы хотите намекнуть на то что я не искал ответ на вопрос прежде чем его задать, то это вы зря. Суть в том что я не спрашиваю какую то конкретику. Мне нужен совет в какую сторону лучше смотреть, идеи и схемы того как бы сделали это вы. А настроить nginx - я настрою.
По теме, с nginx есть проблема, которую я не знаю как разрешить. Допустим кеш устарел, и при этом в этот же момент упал удаленный сервис. Как сделать так что бы nginx в этом случае отдавал бы устаревший контент?
InSys: по-хорошему
забираем себе все картинки и не паримся
при добавлении товара - дозагружаем
при удалении - удалять картинки
Оптимизировать можно
- в месте сбора картинок - все картинки прогнать через оптимизатор картинок
- не сохранять все размеры - формировать и кешировать уменьшенные изображения. nginx - умеет