Модуль Аннулирования Зоны Кэша

Я «спрятал» медленный REST API за nginx. Возникли известные трудности — как обеспечить согласованность кэша? Если для пары урлов это еще можно было сделать чисто через конфигурацию, то с десятью и более это уже выходило за рамки здравого смысла.

Все, что я видел в Google, было немного чудовищным.

Мне очень нужна была такая (или подобная) конфигурация:

   

location ~ ^/zone_two/(.

*)$ { proxy_cache zone_two; proxy_cache_key $document_uri; proxy_cache_valid 60m; set $do_invalidate 0; if ($request_method = PUT) { set $do_invalidate 1; } proxy_cache_invalidate $do_invalidate; # Tadaaa!!! proxy_pass http://127.0.0.1:9102/$1 ; }

В результате родился велосипед – github.com/egorse/ngx-proxy-cache-invalidate .

Работает с 1.8.0, 1.8.1. Другие версии nginx я не тестировал.

Критика всеми возможными способами добро пожаловать.

Особенно если nginx — это потроха.

Обновление 1: не только один элемент в зоне кэша становится недействительным, но и _все_ элементы из зоны кэша, определенной proxy_cache. Теги: #Nginx #модуль nginx

Вместе с данным постом часто просматривают: