Аннулирование браузера кеша статических ресурсов

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

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