Niepowtarzalne buforowanie odpowiedzi HTTP za pośrednictwem Nginx nie powiedzie się

Próbuję powiedzieć nginxowi, aby buforował niektóre moje zasoby (js, css) na zawsze lub przynajmniej przez bardzo długi czas.

Chodzi o to, że gdy pakiet aktywów zostanie skompilowany i opublikowany za pomocą/assets/ Prefiks URI (np./assets/foo-{fingerprint}.js) pozostaje tam i nigdy nie musi się zmieniać.

Internet powiedział mi, że powinienem napisać następującą zasadę:

location ~ ^/assets/.*-([^.]+)\.(js|css)$ {
  gzip_static on; # there's also a .gz of the asset
  expires max;
  add_header Cache-Control public;
  add_header Last-Modified "";
  add_header ETag "";
  break;
}

Spodziewałbym się, że doprowadzi to do odpowiedzi z kodem HTTP 304 „Not Modified”, ale otrzymuję spójny HTTP 200 (OK) za każdym razem.

Próbowałem innych podejść, na przykład:

a) wyraźne ustawienie czasu modyfikacji na stały punkt w przeszłości;

add_header Last-Modified "Thu, 01 Jan 1970 00:00:00 GMT";

b) przejście naIf-None-Match czeki;

add_header ETag $1;
if_modified_since off;

Jednak jedyną rzeczą, która naprawdę działała w razie potrzeby, było:

add_header Last-Modified "Thu, 01 Jan 2030 00:00:00 GMT";
if_modified_since before;

Zgubiłem się. Jest to sprzeczne ze wszystkim, co uważałem za słuszne. Proszę pomóż.

questionAnswers(2)

yourAnswerToTheQuestion