- PVSM.RU - https://www.pvsm.ru -

Модуль инвалидации кэш зоны

«Прятал» медленный REST API за nginx.

Возникли известные сложности — как обеспечить когерентность кэша?

Если для пары url это еще можно было сделать чисто через конфигурацию, то при десяти и более это было уже за гранью здравого смысла.
Все что нагуглил видел, было немного монстроподобно.

Очень хотелось вот такой(или подобной) конфигурации:

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].
Работает с 1.8.0, 1.8.1.
Другие версии nginx не тестировал.

Критика всячески приветствуется. Особенно, если по «потрохам» nginx.

Update1: инвалидится не единичный элемент в кэш зоне а _все_ элементы из кэш зоны определенной по proxy_cache.

Автор: rustler2000

Источник [2]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/nginx/117101

Ссылки в тексте:

[1] github.com/egorse/ngx-proxy-cache-invalidate: https://github.com/egorse/ngx-proxy-cache-invalidate

[2] Источник: https://habrahabr.ru/post/280940/