Назад | Перейти на главную страницу

Очистка кеша и включение файлов для Nginx

В Apache вы можете использовать следующее для кеширования файлов css и js и их сервера как одного файла с модом Apache Include:

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

Я знаю, что это возможно с nginx, но я не могу понять синтаксис правильно.

- РЕДАКТИРОВАТЬ - Добавление кода

Единственное, что у меня есть, это:

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

Я ищу возможность объединить все файлы js и css в отдельные файлы с помощью combined ключевое слово с номером для очистки кеша:

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

-- РЕШЕНИЕ --

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

Не уверен, насколько безопасно иметь ssi_types *; является ...

У меня нет большого опыта работы с ssi модуль, но не могли бы вы попробовать следующее (более или менее прямое переписывание конфигурации 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;
    }

}