Indefinidamente o armazenamento em cache de uma resposta HTTP via Nginx falha

Eu estou tentando dizer ao nginx para armazenar alguns dos meus recursos (js, css) para sempre, ou pelo menos por um longo tempo.

A ideia é que, uma vez que um pacote de recursos seja compilado e publicado com um/assets/ Prefixo de URI (por ex./assets/foo-{fingerprint}.js) fica lá e nunca precisa mudar.

Os internets me disseram que eu deveria escrever a seguinte regra:

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;
}

Eu esperaria que isso resultasse em respostas com o código HTTP 304 "Não Modificado", mas o que obtenho é um HTTP 200 (OK) consistente todas as vezes.

Eu tentei algumas outras abordagens, por exemplo:

a) definindo explicitamente o tempo de modificação para um ponto constante no tempo no passado;

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

b) mudar paraIf-None-Match Verificações;

add_header ETag $1;
if_modified_since off;

No entanto, a única coisa que realmente funcionou conforme necessário foi esta:

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

Estou perdido. Isso é contrário a tudo que achei certo. Por favor ajude.

questionAnswers(2)

yourAnswerToTheQuestion