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óż.