Сегодня я хочу поделиться тем, как заставить браузер перезагружать кешированные js-файлы.

Мы часто сталкиваемся с тем, что наши обновленные файлы js не отражают изменения при развертывании.

Это из-за кеша браузера. Общее (и широко используемое) решение состоит в том, чтобы добавить некоторое случайное число к имени файла js (да, я использовал этот метод в наших текущих приложениях).

Это может быть решением, но не очень хорошим, потому что оно загружает файлы js при каждой загрузке.

Мы можем использовать кешированные Js-файлы, если с ними нет изменений, и обновлять только при их изменении.

В приведенном ниже подходе используется объединение MVC5 и управление версиями приложения.

http://www.jomendez.com/2016/05/26/how-to-avoid-js-files-cache-script-bundle-with-razor/

Объединение поможет вам упаковать ваши js-файлы в пакет. Такое объединение сокращает время первоначальной загрузки приложения.

Обратите внимание на скриншоты ниже: один без комплектации и один с комплектацией.

Связка заняла около 547 мс при начальной загрузке, тогда как обычный вызов js занял 1400 мс.

Ссылаясь на приведенную выше статью, я добавил приведенный ниже скрипт в _Layout.cshtml.

@{
string version = typeof(WebApiApplication).Assembly.GetName().Version.ToString();
}
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache=" + version + "\"></script>", "~/bundles/modernizr")
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache=" + version + "\"></script>", "~/bundles/jquery")
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache=" + version + "\"></script>", "~/bundles/jqueryui")
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache=" + version + "\"></script>", "~/bundles/jquery-confirm")
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache=" + version + "\"></script>", "~/bundles/jqueryval")
@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}?nocache=" + version + "\"></script>", "~/bundles/bootstrap)

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

С этой настройкой наше приложение будет загружать новые файлы js только тогда, когда мы это планировали.

Спасибо за чтение.