Автоматическое управление версиями 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;
}
Другие вопросы по тегам