2012-01-25 13 views
7

Mam nadzieję, że ktoś może doradzić w sprawie właściwej metody uzyskiwania Varnish do wysyłania nagłówków kontroli pamięci podręcznej. Obecnie moja konfiguracja wysyła "Cache-Control: no-cache" do klientów.Jak ustawić nagłówki kontroli pamięci podręcznej varnish

góry dzięki każdemu, kto może być w stanie pomóc ...

+0

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

+0

@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. –

Odpowiedz

11

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.

+1

Od wersji Varnish 4.0 'vcl_fetch' został zastąpiony' vcl_backend_response' –

3

Lakier ignoruje Cache-Control: nocache zgodnie z dokumentacją. Oto dowód potwierdzający, że:

http://drupal.org/node/1418908

Aby uzyskać ten efekt, należy wykryć nagłówek Cache-Control. nocache. z backendu, a następnie unieważnij pamięć podręczną, ustaw odpowiedź zaplecza na nie buforowalną lub wydaj max-age: 0 w drugim nagłówku (teraz zapominam nazwę).

+0

Ten problem jest już zamknięty. Myślę, że plakat uświadomił sobie, że popełnił błąd. –

0

[ivy] ma dobrą radę i/ale robi się trochę skomplikowana, kiedy próbujesz przestrzegać intencji serwera dla buforowania użytkownika końcowego (przeglądarki). Znalazłem this resource być pomocne w zrozumieniu sposobu, aby skonfigurować Varnish trzymać pamięci podręcznej dłużej niż przeglądarka jest instruowany, aby ...

https://www.varnish-cache.org/trac/wiki/VCLExampleLongerCaching