Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 什么告诉浏览器从缓存中检索/重新加载.js文件?尽管存在缓存控制标头,但行为似乎是随机的_.net_Angular_Iis_Browser Cache_Response Headers - Fatal编程技术网

.net 什么告诉浏览器从缓存中检索/重新加载.js文件?尽管存在缓存控制标头,但行为似乎是随机的

.net 什么告诉浏览器从缓存中检索/重新加载.js文件?尽管存在缓存控制标头,但行为似乎是随机的,.net,angular,iis,browser-cache,response-headers,.net,Angular,Iis,Browser Cache,Response Headers,我设法在.NET5中为js文件设置了一个缓存控制头,我可以在浏览器的请求中看到响应头 为了测试这一点,我从另一个位置重复刷新页面/输入页面,文件似乎随机从缓存中重新加载/检索。有时来自“内存缓存”,有时来自文件大小的“1.1MB” 响应头如下所示: accept-ranges: bytes age: 63 cache-control: public, max-age=9999999 content-length: 1144984 content-type: application/javascr

我设法在.NET5中为js文件设置了一个缓存控制头,我可以在浏览器的请求中看到响应头

为了测试这一点,我从另一个位置重复刷新页面/输入页面,文件似乎随机从缓存中重新加载/检索。有时来自“内存缓存”,有时来自文件大小的“1.1MB”

响应头如下所示:

accept-ranges: bytes
age: 63
cache-control: public, max-age=9999999
content-length: 1144984
content-type: application/javascript
date: Sat, 27 Feb 2021 16:44:36 GMT
etag: "1d70bcf6330ed98"
expires: Mon, 29 Mar 2021 16:43:33 GMT
last-modified: Thu, 25 Feb 2021 23:38:58 GMT
server: Microsoft-IIS/10.0
strict-transport-security: max-age=2592000
vary: Accept-Encoding
x-powered-by: ASP.NET

我遗漏了什么吗?

正如您在响应头中看到的,可以缓存的文件是公共的未加密文件,并且没有设置特定的文件有效期,只有过期时间是3.29

当您第一次访问时,js文件在本地成功缓存。当您在一段时间后第二次访问时,原始缓存尚未过期,且etag验证发现这些静态文件未更新,则浏览器将从本地缓存加载静态文件

然后在短时间内重复刷新同一页,这些文件直接从内存加载,而不是在本地缓存。根据windows的设计逻辑,当资源当前处于优先使用状态时,常用资源将从本地存储中取出并放入内存,以便下次使用时可以更快地获取。因此,除非静态资源过期,否则浏览器将再次从服务器检索静态资源