Аннулирование браузера кеша статических ресурсов - PullRequest
0 голосов
/ 18 ноября 2011

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

Я надеюсь решить эту проблему, вставив значение в конец всех тегов script и style, чтобы браузеры отправляли фактический запрос на сервер. Это значение должно оставаться неизменным на нескольких серверах, пока не будет введена команда для его изменения. Как я могу сгенерировать / изменить это значение на нескольких серверах?

1 Ответ

4 голосов
/ 19 ноября 2011

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

1. строка запроса revving - ссылки на "style.css" становятся "style.css? v = 1.0"

2. имя файла revving - ссылки на "style.css" становятся "style-1.0.css" (необходимо также переименовать или создать файл "style-1.0.css" на вашем сервере)

Я использовал оба метода, строка запроса, вероятно, более распространена, потому что вам не нужно переименовывать файл на сервере.

Тем не менее, эта запись, Revving Filenames: не используйте строку запроса , дает вескую причину использовать вместо имени файла revving


Одним из способов реализации этого для изменения строки запроса было бы сохранение номера версии в настройках приложения web.config

<appSettings>
    <add key="staticResourceVersion" value="1.1"/>
    ...
</appSettings>

Затем создайте некоторый служебный метод (или вызовите ConfigurationManager.AppSettings напрямую), чтобы использовать встроенный метод для статической разметки ресурса, например:

<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>
...