Аннулирование браузера кеша статических ресурсов
Я работаю над кэшированием статических ресурсов. Часто при изменении скрипта или стиля это создает проблемы для людей, пока их браузер не решит, что пришло время аннулировать кэш нашего файла.
Я надеюсь решить эту проблему, вставив значение в конец всех тегов script и style, чтобы браузеры отправляли фактический запрос на сервер. Это значение должно оставаться неизменным на нескольких серверах, пока не будет введена команда для его изменения. Как я могу сгенерировать / изменить это значение на нескольких серверах?
1 ответ
Вы можете редактировать статические ресурсы с помощью строки запроса или изменения имени файла. Любой метод должен обновить на клиенте.
1. revstring строки запроса - ссылки на "style.css" становятся "style.css? V = 1.0"
2. имя файла revving - ссылки на "style.css" становятся "style-1.0.css" (также необходимо переименовать или создать файл "style-1.0.css" на вашем сервере)
Я использовал оба метода, строка запроса, вероятно, более распространена, потому что вам не нужно переименовывать файл на сервере.
Тем не менее, эта запись, Revving Filenames: не использовать querystring, дает вескую причину для использования имени файла revving
Один из способов реализовать это для изменения строки запроса - сохранить номер версии в настройках приложения web.config.
<appSettings>
<add key="staticResourceVersion" value="1.1"/>
...
</appSettings>
Затем создайте некоторый служебный метод (или вызовите ConfigurationManager.AppSettings
напрямую) использовать inline для статической разметки ресурса, например:
<link rel="stylesheet" type="text/css"
href="/css/style.css?v=<%=Utilities.GetStaticResourceVersion() %>" />
<script type="text/javascript"
src="/js/script.js?v=<%=Utilities.GetStaticResourceVersion() %>"></script>