Сегодня я хочу поделиться тем, как заставить браузер перезагружать кешированные 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 только тогда, когда мы это планировали.
Спасибо за чтение.