Welcome! Log In Create A New Profile

Advanced

proxy_cache_revalidate

April 12, 2015 08:19AM
Добрый день,
Если я правильно понимаю, то при ревалидации данные в кеше должны быть обновлены (повторно загружены с бекенда), только если они обновились на бекенде (if-Modified-Since/If-None-Match отличается от Last-modified), но судя по логам, данные с бекенда берутся в полном объеме, даже если они не изменились.

example.com -> proxy -> backend
*прокси тут только для статистики трафика, если его исключить, картина не измениться

proxy_cache_path one levels=1:2 keys_zone=one:10m inactive=24h max_size=1G;
server {
listen 80;
server_name backend;
location / { root /var/www/backend; }
}

server {
listen 80;
server_name example.com;

location / {
proxy_set_header Host backend;
proxy_pass http://unix:/tmp/proxy.sock;
proxy_cache one;
proxy_cache_revalidate on;
proxy_cache_valid 200 1m;
}
}

server {
listen unix:/tmp/proxy.sock;
server_name proxy;

location / {
proxy_pass http://$host;
}
}

backend отвечает файлом index.html размером в 1 мб

лог трафика example.com
request_length:73 bytes_sent:105997 body_bytes_sent:105768 # (MISS)
request_length:73 bytes_sent:591528 body_bytes_sent:591300 # (HIT)
request_length:73 bytes_sent:164076 body_bytes_sent:163840 # (REVALIDATED)

лог трафика proxy
request_length:91 bytes_sent:1048769 body_bytes_sent:1048576 # (MISS)
request_length:175 bytes_sent:4096 body_bytes_sent:3918 # (REVALIDATED)

лог трафика backend
request_length:91 bytes_sent:1048769 body_bytes_sent:1048576 # (MISS)
request_length:175 bytes_sent:1048754 body_bytes_sent:1048576 # (REVALIDATED)
---------
Из лога видно, что 1 запрос передается на proxy, потом на backend, 2 запрос отдается с example.com из кеша не затрагивая proxy и как следствие backend (и не попадает в их логи), а вот 3 запрос … когда идет ревалидация меня завел в тупик, proxy отправляет example.com 4096 байт, но вот backend отправляет на proxy полностью весь ответ (1048769)

при ревалидации получается вот так
example.com <-4096- proxy <-1048769- backend
хотя должно быть вот так
example.com <-4096- proxy <-4096- backend
----
в чем тут проблема? как не загружать с бекенда полностью весь ответ (1048769 bytes), а только обновить данные что кеш валидный затратив на это всего 4096 bytes
Subject Author Posted

proxy_cache_revalidate

Andrey Vlasov April 12, 2015 08:19AM

Re: proxy_cache_revalidate

S.A.N April 12, 2015 09:33AM

Re: proxy_cache_revalidate

Andrey Vlasov April 12, 2015 02:17PM

Re: proxy_cache_revalidate

S.A.N April 12, 2015 02:45PM

Re: proxy_cache_revalidate

Gena Makhomed April 12, 2015 02:46PM

Re: proxy_cache_revalidate

Andrey Vlasov April 12, 2015 03:10PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 223
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready