在我们的应用程序中,我们想缓存静态内容,如图像,CSS等 . 出于安全原因,我们添加了HTTP标头 -
<httpProtocol>
<customHeaders>
<!-- Add custom headers to not allow the page content to be cached -->
<add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
<add name="Pragma" value="no-cache" />
<add name="Expires" value="0" />
</customHeaders>
</httpProtocol>
现在假设验证请求并使用缓存(如果已验证) . 但它不起作用 . 即使是同一个请求,它仍会一次又一次地加载静态内容 .
我尝试在config中添加自定义代码,如下所示
<staticContent>
<clear/>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:10:00" />
<mimeMap fileExtension=".jpg" mimeType="image/jpg"/>
<mimeMap fileExtension=".png" mimeType="image/png"/>
<mimeMap fileExtension=".css" mimeType="text/css"/>
<mimeMap fileExtension=".js" mimeType="text/javascript"/>
</staticContent>
它仍然无效 .
我不想使用outputcache .
有没有可用的选择?
1 回答
no-store
完全禁用缓存MDN link#1,MDN link#2据我所知,你只需要一个 Headers :
首先加载浏览器加载资源:通知状态代码为200,响应大小为8 KB . 服务器应该添加(
IIS
自动执行)Etag
header(e.x.Etag: "8099f82b154d41:0"
)然后浏览器缓存该文件并保存Etag
值 . 在下一页上,重新加载浏览器将该值作为If-None-Match
请求标头(e.x.If-None-Match: "8099f82b154d41:0"
)发送 . 服务器检查该值,如果文件未更改,则响应304 http-code:通知状态代码为304,响应大小为117 B.在这种情况下,使用缓存文件 .如果在服务器上更改文件,服务器将使用新文件和200个http代码进行响应,不会使用缓存 .