在我们的应用程序中,我们想缓存静态内容,例如图像,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>
现在应该验证请求并使用高速缓存(如果已验证)。 但是它不起作用。即使是相同的请求,它仍然会一次又一次地加载静态内容。
我尝试如下在配置中添加自定义代码
<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。
有没有其他选择?
答案 0 :(得分:0)
no-store
完全禁用缓存MDN link#1,MDN link#2
据我了解,您只需要一个标题:
<add name="Cache-Control" value="no-cache" />
在第一次加载时,浏览器会加载资源:
通知状态代码为200,响应大小为8 KB。服务器应添加(IIS
自动完成)Etag
标头(例如Etag: "8099f82b154d41:0"
)
然后浏览器缓存文件并保存Etag
值。
在下一页的重新加载中,浏览器将该值作为If-None-Match
请求标头发送(例如If-None-Match: "8099f82b154d41:0"
)。服务器检查该值,如果文件未更改,则以304 HTTP代码响应:
通知状态代码为304,响应大小为117B。在这种情况下,将使用缓存的文件。
如果要在服务器上更改文件,服务器将以新文件和200个http代码响应,则不会使用缓存。