Проблема кэширования Javascript Minification - PullRequest
3 голосов
/ 06 декабря 2011

У меня есть приложение ASP.Net MVC 3. Я использую YUICompressor.Net для минимизации Javascripts & Css Files во время пост-сборки с использованием MSBuild.

Сгенерированный уменьшенный файл javascript - это JSMin.js и CssMin.css. Моя главная страница ссылается на эти файлы, как показано ниже:

link rel = "stylesheet" href = "@ Url.Content (" ~ / Content / CssMin.css ")" type = "text / css">

script type = "text / javascript" src = "@ Url.Content (" ~ / Scripts / JsMin.js ")">

Теперь проблема минимизированной версии кэшируется в браузере конечных пользователей, поэтому наши новые исправления в javascript / css не отражаются в браузере конечных пользователей, поскольку эти файлы кэшируются, так как он использует то же имя файла. Я ищу какой-то чистый процесс, который соберет минимизированный файл javascript & Css с номером версии, например, JsMin1.0.js & CssMin1.1.js, и автоматически обновит ссылку для приведенного ниже

link rel = "stylesheet" href = "@ Url.Content (" ~ / Content / CssMin.css ")" type = "text / css">

script type = "text / javascript" src = "@ Url.Content (" ~ / Scripts / JsMin.js ")">

Ваша помощь высоко ценится. Спасибо.

Ответы [ 3 ]

0 голосов
/ 06 декабря 2011

Да. Вам нужно изменить URL. В противном случае браузер пользователя cche, вероятно, будет обслуживать последнюю просмотренную версию. Лучше всего управлять версиями ваших ресурсов, чтобы строка версии стала частью URL. Обычно вы хотите поместить эту строку версии в путь или имя файла, а не строку запроса, чтобы она хорошо работала со всеми прокси и CDN. Это, несомненно, может быть болью. Вам нужно не только создать версию файла, но и убедиться, что все ссылки обновлены, поэтому вам нужно либо изменить их вручную, либо создать процесс сборки или архитектуру приложения, которая позаботится об этом за вас.

У меня есть проект OSS, RequestReduce , который минимизирует и объединяет css и js во время выполнения. Решение обрабатывает все ссылки переписывает. Единственный улов заключается в том, что при изменении содержимого вам необходимо очистить кэш RequestReduce, что легко сделать с помощью панели мониторинга, предоставленной приложением.

Это также спрайт и оптимизирует фоновые изображения.

Проверьте http://www.requestreduce.com для получения дополнительной информации.

0 голосов
/ 17 марта 2012

Вы можете использовать решение, такое как https://github.com/vincpa/mvc.resourceloader, которое позаботится о кэшировании браузера, установит соответствующие заголовки etag и сохранит версии.С другой стороны, я написал эту библиотеку, поэтому я предвзятый:)

На мой взгляд, лучше использовать хеш, а не номер версии.Таким образом, вам не нужно отслеживать, какая у вас версия.

Кроме того, вы хотите избежать добавления номеров версий в строки запроса, поскольку некоторые прокси не кэшируют ресурсы, содержащие строки запроса.

0 голосов
/ 06 декабря 2011

Вам необходимо использовать очистку кэша в URL-адресах статического медиаресурса CDN:

http://codebetter.com/karlseguin/2010/01/11/asp-net-performance-part-3-cache-busting/

Вы не можете очистить кеш браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...