Estou usando o nginx para servidor do meu conteúdo estático; existe uma maneira de definir os cabeçalhos de expiração para cada arquivo que atenda a uma regra específica? Por exemplo, posso definir o cabeçalho de expiração para todos os arquivos com extensão '.css'?
96
root
conjunto; nesse caso, você deve adicionar as diretivas a esse bloco. (Eu sei que isto é 2y tarde, mas para os cidadãos futuros)A
location
diretivaA
expires
diretivafonte
Não tenho reputação suficiente para comentar por que a resposta aceita faria com que os arquivos não fossem mais exibidos, mas descobri e gostaria de ajudar!
Versão curta:
Certifique-se de ter um diretório raiz especificado para o seu bloco de localização nas imagens, se você não tiver um conjunto global!
Versão longa abaixo:
Primeiro de tudo, meu método de implementar esta solução foi realmente semelhante a esta resposta , onde você escreve a regra (como na resposta aceita):
em um arquivo img-cache.conf
e inclua esse arquivo na sua
server {...}
diretiva.Meu exemplo de somesite.com na minha pasta de sites disponíveis:
Dessa forma, você pode adicionar o bloco de local de armazenamento em cache da imagem a vários sites em execução.
Em segundo lugar, tenho uma situação em que meu / var / www / contém duas pastas que eu permito como public_html - seguro e treinamento, por isso tenho que criar blocos de localização específicos na diretiva de servidor do meu site destacando essas pastas.
Como tal, não tenho um diretório raiz global definido .
Portanto, quando você cria os blocos de localização da imagem, pode não estar fornecendo a eles um diretório raiz a partir do qual procurar as imagens!
Minha solução foi então:
fonte
.conf
. A pasta apropriada emnginx/1.14.0 (Ubuntu)
parece ser/etc/nginx/snippets/
.Você também pode definir o prazo de validade para o máximo. Aqui está a diretiva que eu uso para css e js.
fonte
Todas as soluções acima mencionadas negarão a possibilidade de ter aliases diferentes para caminhos diferentes. Também para ter todas as suas diferentes expirações de cache em um só lugar, você deve usar o mapa nginx da seguinte maneira.
...
Off
desativa o armazenamento em cache,epoch
(para a época do unix) resulta no recurso sempre sendo recuperado,max
define a data para o valor máximo do navegador.A imagem ~ corresponde a qualquer tipo de imagem.
Mais sobre os mapas do nginx em http://nginx.org/en/docs/http/ngx_http_map_module.html .
fonte
$sent_http_content_type
for"text/css;charset=UTF-8"
a expressão acima falhará.Se você tiver um local que abriga todos os seus arquivos estáticos, algo como isso servirá ...
A resposta aceita fez com que o nginx não encontrasse nenhum dos meus arquivos estáticos. Não tenho muita certeza do porquê, mas essa é uma alternativa simples.
fonte
/static
pasta (o que você definir no local) no final do alias (logo depois.../files
no exemplo).Como esse é um tópico muito antigo, encontrei um tutorial incrível atualizado.
Talvez você queira dar uma olhada
Como implementar o cache do navegador com o módulo de cabeçalho do Nginx no Ubuntu 16.04
fonte