Я написал http-обработчик asp.net, который возвращает javascript. При включении тега сценария на html-страницу, которая ссылается на этот обработчик, chrome / firefox не сообщает элементу управления кэшем: заголовок max-age возвращается , если строка запроса (или '?') Присутствует в сценарии тег src. Таким образом, обработчик получает удар каждый раз. Это происходит как в Firefox, так и в Chrome.
Вот реализация обработчика:
Public Overrides Async Function ProcessRequestAsync(context As HttpContext) As Task
Dim loader As New ScriptLoader(context)
Dim sb As New StringBuilder()
sb.Append(Await loader.GetScriptsAsync())
sb.Append(loader.GetLoaderScript("engine"))
sb.Append(loader.GetLoaderScript("styles"))
Dim script As String = sb.ToString()
context.Response.ContentType = "application/javascript"
context.Response.Cache.SetCacheability(HttpCacheability.Public)
context.Response.Cache.SetMaxAge(TimeSpan.FromHours(12))
context.Response.Write(script)
End Function
Тег HTML-скрипта:
<div>
<script src="/ListingDisplay/loader/js"></script>
</div>
Результаты:
https://i.ibb.co/hK8TQJ3/Capture.png
Когда я добавляю "?" по источнику сценария:
<div>
<script src="/ListingDisplay/loader/js?"></script>
</div>
Я получаю ожидаемые результаты, и обработчик не срабатывает при последующих запросах:
Ожидаемый результат:
https://i.ibb.co/x8S3W3v/Capture.png
Кто-нибудь когда-нибудь видел это? Есть идеи?