Выдвиньте новую версию JavaScript, CSS и графического контента, используя ASP .NET MVC

Я хочу, чтобы мой JavaScript ссылался через & lt; script & gt; теги, мои css и различные графические файлы для кэширования в браузере пользователя для данной версии моего сайта. Однако когда я выпускаю обновление файла, я хотел бы убедиться, что новый контент (Javascript, CSS, графика и т. Д.) Будет обновляться на компьютере пользователя.

При исследовании этой проблемы я обнаружил ряд возможных решений:

Adjust http headers for things like cache control and expires Append a unique querystring to each resource request Include a version number in the path (or filename) of the resource being requested

Моя проблема с вариантом 1 (помимо незнания того, как реализовать его для некоторых типов контента) заключается в том, что если между браузером и IIS существует промежуточный прокси-сервер, то промежуточный прокси-сервер может не учитывать заголовки http, и контент будет кэшируется между браузером и прокси.

Моя проблема с вариантом 2 в два раза. Например, если я просто использую случайное число или временную метку, то браузер будет каждый раз запрашивать новый ресурс, минуя локальный кеш, даже если содержимое не изменилось (если не между выпусками). Обойти эту проблему можно, используя метку времени файла ресурса или хеш файла; это изменится только тогда, когда произойдет новый выпуск. Однако это вызывает у меня второе беспокойство: я понимаю, что некоторые веб-прокси никогда не кэшируют что-либо со строкой запроса по умолчанию (http://stackoverflow.com/questions/5541340/how-can-i-prevent-javascript-caching- -подход строку запроса-разве-работает). Хотя это, вероятно, настраиваемо, я бы не хотел полагаться на то, что администратор изменил настройку по умолчанию, чтобы получить преимущество в производительности от кэширования.

Вариант 3 кажется лучшим выбором, но я не знаю, как реализовать его на практике для ASP .NET MVC (в настоящее время используется ASP .NET MVC 3). Вручную, я мог бы зайти в каждый файл, который ссылается на графический, css или внешний файл javascript, и изменить путь для включения другого номера версии для каждого выпуска, но, очевидно, это утомительно и подвержено ошибкам.

Мои вопросы тогда:

1) Существуют ли другие стратегии, позволяющие избежать кэширования (для данного выпуска), которые я должен рассмотреть, и

2) предполагая, что я использую опцию 3 (включая номер версии в пути к ресурсу), как я могу добиться этого в приложении ASP .NET MVC способом, который реально поддерживать?

Спасибо,

Notre

Ответы на вопрос(2)

Ваш ответ на вопрос