Ребята, мне нужен ебаный кеширующий reverse http proxy.
Работать он должен предельно просто. Если в кеше есть запись, то он оправляет запрос с заголовком If-Modified-Since к бекенду. Если бекенд отвечает 304 Not Modified — прокси должен отдавать свою закешированную запись. Если бекенд отвечает 200 OK — прокси должен засунуть свою копию себе в задницу, а вместо нее взять вариант от бекенда.
НЕ ДОЛЖНО БЫТЬ НИКАКИХ ЕБАНЫХ ВРЕМЕННЫХ ИНТЕРВАЛОВ. НИГДЕ, БЛЯДЬ. Если запись была закеширована наносекунду назад — прокси все равно должен пиздовать к бекенду с If-Modified-Since. ТОЛЬКО БЕКЕНД ДОЛЖЕН РЕШАТЬ, ИНВАЛИДИРОВАТЬ КЕШ ИЛИ НЕТ.
Я поебался с nginx’ом и раком, и боком, и разуверился в том, что он умеет так работать.
Че дальше? Squid брать, или вообще сраный варниш?
Убираешь все заголовки, относящиеся к кешированию, ставишь Cache-control: no-cache, дату и/или ETag и именно так всё работает. Если не хочется иметь миллион запросов на каждый рефреш, включай кеширование и синхронизируй состояние из приложения через ngx_cache_purge.
@n Ну да, там purge уже встроен.