Cache Busting e inclusão de arquivos para o Nginx

1

No Apache, você pode usar o seguinte para armazenar em cache os arquivos css e js e organizá-los como um único arquivo com o mod de inclusão do Apache:

<FilesMatch "\.combined\.js$">
  Options +Includes
  AddOutputFilterByType INCLUDES application/javascript application/json
  SetOutputFilter INCLUDES
</FilesMatch>
<FilesMatch "\.combined\.css$">
  Options +Includes
  AddOutputFilterByType INCLUDES text/css
  SetOutputFilter INCLUDES
</FilesMatch>
<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
</IfModule>

Eu sei que isso é possível com o nginx, mas não consigo acertar a sintaxe.

- EDIT - Adicionando algum código

A única peça que tenho até agora é:

location ~* (.+)\.(?:\d+)\.(js|css)$ {
    ssi on;
    try_files $uri $1.$2;
}

O que estou procurando é poder combinar todos os arquivos js e css em arquivos únicos usando a palavra-chave combined com um número para impedimento de cache:

style.combined.100.css
javascript.combined.100.js

- SOLUÇÃO -

location / {

    ssi on;
    ssi_types *;

    location ~* \.combined\.js$ {
        ssi_types application/javascript application/json;
    }

    location ~* \.combined\.css$ {
        ssi_types text/css;
    }

    location ~* ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ {
        try_files $uri $1.$3 =404;
    }
}

Não tenho certeza de quão seguro é ter ssi_types *; ...

    
por Vince Kronlein 03.11.2013 / 03:20

1 resposta

2

Eu não tenho muita experiência com o módulo ssi , mas você poderia citar o seguinte? tente (mais ou menos uma reescrita direta da configuração do Apache).

location / {

    location ~* \.combined\.js$ {
        ssi on;
        ssi_types application/javascript application/json;
    }

    location ~* \.combined\.css$ {
        ssi on;
        ssi_types text/css;
    }

    location ~* ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ {
        try_files $uri $1.$3 =404;
    }

}
    
por 03.11.2013 / 10:51