Twój back-end jest wysyłanie "Cache-Control: no-cache" lakieru co oznacza dwie rzeczy:
- Lakier nie przechowuje odpowiedzi w pamięci podręcznej (więc ponowne wyszukiwanie zakończy się niepowodzeniem).
- Twoi klienci (przeglądarki i pośrednie proxy) nie będą buforować odpowiedzi (i zażądać ich w kółko).
Rozwiązanie jest proste: należy usunąć nagłówki kontrolek pamięci podręcznej po pobraniu odpowiedzi z zaplecza (i przed zapisaniem ich w pamięci podręcznej).
W pliku VCL zrobić:
sub vcl_fetch {
remove beresp.http.Cache-Control;
set beresp.http.Cache-Control = "public";
}
Możesz to zrobić tylko dla niektórych adresów URL (zawinąć go w (if req.url ~ "")
logiki) i zrobić o wiele bardziej zaawansowane rzeczy.
To może pomóc, jeśli wyjaśnić, co chcesz. Która konfiguracja (lakier lub twój back-end) wysyła nagłówki bez pamięci podręcznej? Możesz zastąpić te nagłówki w Varnish, ale to, czy jest to "poprawne", zależy od semantyki twoich odpowiedzi (czy są one wielokrotnego użytku, ponad klientami, jak długo, itd.). – ivy
@ivy, Dzięki za odpowiedź. Próbuję osiągnąć, aby ** Varnish ** wysyłać nagłówki kontroli pamięci podręcznej, które ręcznie określam, niezależnie od tego, co back-end wysyła do Varnish. –