2016-02-16 2 views
5

При использовании Bundles с EnableOptimisations, установленным в true, выходной URL-адрес содержит хэш, чтобы браузер не мог загрузить файл из кеша, если он изменился.Cache busting with Scripts.Render, но без связки URL

@Scripts.Render("~/content/js/global") 

Выходы:

<script src="/content/js/global?v=PqstRRGF8qsUsJfHu6NBBBp6eDxYBz1JCbHY6CQJVks3"></script> 

Однако, некоторые файлы в нашем приложении специфичны для одной страницы. Мы ссылаться на них напрямую:

@Scripts.Render("~/areas/areaname/content/js/page-name.js") 

Выход URL в данном случае не имеет хэш и поэтому кэшируются, что вызывает проблемы, когда мы выпускаем изменения в этих файлах.

Мы предпочитаем не изменять каждую ссылку отдельно или изменять вручную URL-адреса при каждом изменении файлов.

Как я могу глобально добавить хэш (или номер версии) ко всем URL-адресам сценариев и стилей, которые являются не связки?

ответ

5

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

Вы можете вручную установить форматы тегов по умолчанию и включить номер версии.

string versionNumber = "1.2.3.4"; // get from assembly or config setting 

Styles.DefaultTagFormat = string.Format("<link href='{{0}}?v={0}' rel='stylesheet'/>", versionNumber); 
Scripts.DefaultTagFormat = string.Format("<script src='{{0}}?v={0}'></script>", versionNumber); 

Только проблема, которую я вижу, заключается в том, что ваш URL уже содержит запрос. Это добавит второй ?, а не &.

Смежные вопросы