首页 > 解决方案 > 无法让 ASP.NET/IIS 使用自定义缓存控制设置来提供 .js 文件

问题描述

在我的 ASP.NET MVC 5 应用程序中,我使用了clientCacheweb.config 属性来自定义静态文件的缓存行为。

<system.webServer>
  <staticContent>
    <clientCache cacheControlCustom="private,max-age-300" setEtag="true" />
  </staticContent>
</system.webServer>

这适用于 .css 和图像文件,但我在浏览器的开发工具中注意到 .js 文件没有获得其他文件类型获得的自定义cache-control和标头。etag

在此处输入图像描述

此外,我尝试添加自定义处理程序,但据我所知,它没有任何效果。

<handlers>
  <add name="StaticHandler_js" verb="*" path="*.js" type="System.Web.StaticFileHandler" />
</handlers>

关于如何让 ASP.NET/IIS 以与其他静态文件相同的方式处理 .js 文件的任何想法?

标签: asp.netiis

解决方案


我能够通过添加特定于路径的配置来清除所有处理程序并仅将静态文件默认值添加到这些路径来解决此问题。这是一个不完美的解决方案,因为它基于文件路径,而不是文件类型,但因为我所有的 JavaScript 文件都在这个单一文件夹中,所以它可以完成工作。

<location path="Scripts">
  <system.webServer>
    <handlers>
      <clear />
      <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read"/>
    </handlers>
  </system.webServer>
</location>

如果有人有更好的不依赖文件路径的解决方案,我很乐意接受它作为解决方案。


推荐阅读