代码之家  ›  专栏  ›  技术社区  ›  omkar patade

MVC-缓存控件不适用于静态内容

  •  1
  • omkar patade  · 技术社区  · 7 年前

    在我们的应用程序中,我们希望缓存静态内容,如图像、css等

    <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>
    

    但还是不行。

    有什么选择吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   AlbertK    7 年前

    no-store 完全禁用缓存 MDN link#1 , MDN link#2

    据我所知,你只需要一个标题:

    <add name="Cache-Control" value="no-cache" />
    

    enter image description here 注意,状态代码是200,响应大小是8KB。服务器应添加( IIS 是否自动) Etag 标题(e.x。 Etag: "8099f82b154d41:0" 然后浏览器缓存文件并保存 价值。 在下一页重新加载浏览器时,将该值作为 If-None-Match 请求头(e.x。 If-None-Match: "8099f82b154d41:0" enter image description here 注意,状态代码是304,响应大小是117b。在这种情况下,使用缓存文件。

    如果在服务器上更改文件,服务器将用一个新文件和200个http代码响应,则不会使用缓存。