我写了一个返回javascript的asp.net http处理程序。在html页上包含引用此处理程序的脚本标签时,chrome / firefox不会报告除非中存在查询字符串(或'?')的被返回的cache-control: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
有人见过吗?有什么想法吗?