Автоматическое управление версиями CSS/JS в nginx
У меня есть настройки, где nginx обслуживает весь статический контент (CSS/JS). Наша проблема в том, что когда мы обновляем статический контент, браузер не обязательно обновляет их немедленно, что вызывает проблемы, когда мы загружаем новые версии.
Я хотел бы иметь плагин nginx, который в основном заменяет все вызовы CSS / JS и рекламирует номер версии, например так:
До:
<link rel="stylesheet" type="text/css" href="/media/css/style.css" />
После:
<link rel="stylesheet" type="text/css" href="/media/css/style.css?3428432" />
И делает это автоматически на основе даты последнего изменения самого файла style.css. Поэтому мне не нужно обновлять HTML. Есть ли плагин для этого? Я знаю, что Googles mod_pagespeed делает подобные вещи в их модуле apache2... но я не могу найти никого для nginx.
2 ответа
Обычно это делается в самом приложении, а не на уровне веб-сервера. Веб-сервер обычно знает, что и где обслуживать. Как PHP, так и Rails имеют возможность делать то, что вы описали выше, но опять же, это внутри самого приложения.
Из того, что я могу сказать, эта статья является хорошим пошаговым шагом, который очень похож на то, что вы просите, но опять же, это связано с изменениями приложения. Если вы ищете в Google "nginx css versioning", вы найдете другие статьи, в которых обсуждается конфигурация nginx, но все, что я смотрел на изменения в приложении, также изменилось.
Добавление ниже к nginx должно обслуживать файл, беря только имя файла и игнорируя информацию о версии.
location ~ ^/(assets/js|assets/css) {
root path/to/the/static/files;
access_log off;
expires max;
try_files $uri $1;
}