asp.net - 在asp.net mvc中实现静态文件缓存

标签 asp.net asp.net-mvc asp.net-mvc-4 caching

我正在尝试在 ASP.net mvc 应用程序中实现静态文件缓存。

我做了什么:

我已加入 Content文件夹 a web.config包含以下内容的文件:

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="300.0:00:00" />
    </staticContent>
  </system.webServer>
</configuration>

在网站web.config文件,我注释掉了一些代码行:
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      <!-- Commented them out
      <add verb="GET" path="*.js" name="Static for js" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.css" name="Static for css" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.png" name="Static for png" type="System.Web.StaticFileHandler" />
      <add verb="GET" path="*.jpg" name="Static for jpg" type="System.Web.StaticFileHandler" />
      -->
    </handlers>

现在,发布网站并检查资源,我得到以下响应:

enter image description here

我看到缺少 Expire标题?! (不应该为了缓存工作而存在)

响应头是否告诉浏览器在接下来的 25920000 秒内缓存资源?

为了缓存静态文件,我正在做正确的事情吗?

最佳答案

这是正确的,你should be fine .

Some可能会说你应该添加 Expires也适用于不理解 HTTP/1.1 的客户端,但正如在 first linked article 中已经讨论过的那样,这不应该是一个真正的问题,更不用说现在,7 年后。

关于asp.net - 在asp.net mvc中实现静态文件缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21548334/

相关文章:

c# - ASPX 身份验证 cookie 过期时间始终为 30 分钟

asp.net-mvc - 如何从自定义帮助程序中使用 ASP.NET MVC Html 帮助程序?

asp.net-mvc-4 - 如何在 iframe src 中使用 Url.Action

javascript - JavaScript 中的 ValidatorValidate 方法不适用于 ie10

javascript - 使用 __doPostBack 从 JavaScript 调用 ASP.NET TextChanged 事件

ASP.NET - 创建自定义上下文对象?

asp.net-mvc - ASP.NET MVC 5、Knockout.js 和映射 : the right way?

asp.net-mvc - MVC3 中的新 T4 Controller 模板

asp.net - 在布局中添加 PartialView

c# - .NET 中的 Cookie 和 session 过期