Eu tenho um nginx rodando no docker como um servidor estático. template.xlsx
Quando eu atualizo o arquivo de pasta do lado do servidor . o download ainda retorna o arquivo antigo, tenho certeza de ter substituído o template.xlsx
arquivo estático por um novo. como fazer o nginx retornar o novo arquivo nginx? esta é a configuração estática do nginx:
server{
listen 443 ssl;
ssl_certificate /etc/nginx/conf.d/cert/example.com/fullchain1.pem;
ssl_certificate_key /etc/nginx/conf.d/cert/example.com/privkey1.pem;
server_name static.example.com;
location / {
root /usr/share/nginx/html/static;
client_max_body_size 50m;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
index index.html index.htm;
}
}
Tentei reiniciar o container docker parece que ainda não retornou o novo template.
Por padrão, o nginx usa
off
a diretiva expira . Isso significa que o nginx não adiciona ou modifica os campos de cabeçalho de resposta “Expires” e “Cache-Control”. Para um arquivo estático, isso significaria que o cliente (navegador) na ausência de ambos os cabeçalhos tem uma escolha livre de como armazenar o recurso em cache (é quase um comportamento indefinido para você relacionado à especificação HTTP porque pode armazenar uma resposta bem-sucedida, por exemplo, para sessão atual ou até mais por algum tempo fixo, dependendo de suas configurações, a menos que esteja atualizando a solicitação (F5/Ctrl+F5 do navegador ouIf-Modified-Since
, ou cabeçalhosIf-None-Match
de solicitação do cliente).Cache-Control
Pragma
A reinicialização do nginx (ou contêiner docker) não ajudaria em nada aqui, pois é o lado do navegador/cliente que pode usar o arquivo em cache. Nos navegadores, você pode usar DevTools (F12) -> Rede para monitorar o que exatamente acontece se você iniciar um download (e quais cabeçalhos seu navegador envia por solicitação e recebe com resposta do nginx).
Você pode:
expires -1;
ou adicionandoCache-Control: no-cache
cabeçalho (note que não é aconselhável desabilitar completamente o cache para tudo estático, pelo menos não faça isso para recursos que mudam muito raramente, como imagens, estilos e JS )template.xlsx?ver=2
, por exemplo, enviar uma solicitação com algum sufixo incremental como?ver=...
aqui (ou simplesmente um carimbo de data/hora);Cache-Control: no-cache
ePragma: no-cache
cabeçalhos de algum cliente HTTP;