通过 httpmodule 为自定义文件夹添加客户端缓存

Adding client cache via httpmodule for custom folder

我目前在我的项目 web.config 中使用。

<location path="js">
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="8765:00:00"/>
    </staticContent>
   </system.webServer>
</location>
<location path="css">
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="8765:00:00"/>
    </staticContent>
   </system.webServer>
</location>

如果我只想在这里和那里缓存几个文件夹,这会很好,但我在其他一些地方有 javascript 和 css,我也想缓存并选择了使用 HttpModule 在那里缓存这些目录。

我做了一些研究并在 clientCache 上遇到了 this article from Microsoft,它向我展示了如何使用 c#

在 httpModule 中更新它
  using(ServerManager serverManager = new ServerManager())
  { 
     Configuration config = serverManager.GetWebConfiguration("Default Web Site");
     ConfigurationSection staticContentSection = config.GetSection("system.webServer/staticContent");

     ConfigurationElement clientCacheElement = staticContentSection.GetChildElement("clientCache");
     clientCacheElement["cacheControlMode"] = @"UseMaxAge";
     clientCacheElement["cacheControlMaxAge"] = @"8765:00:00";

     serverManager.CommitChanges();
  }

我的问题是,是否可以使用此方法指定我要缓存的确切文件夹?例如,如果我在以下目录中有一个带有 javascript 的文件夹:siteMap/js 如何告诉我的 httpModule 为该显式文件夹设置 clientCache?

例如。如果您想通过在 web.config.

中添加 <location="Scripts"> 部分来为文件夹 "Scripts" 设置客户端缓存

那么你可以试试这个 config.GetSection("system.webServer/staticContent", "Scripts"); .

  using(ServerManager serverManager = new ServerManager()) { 
            Configuration config = serverManager.GetWebConfiguration("Default Web Site");

            ConfigurationSection staticContentSection = config.GetSection("system.webServer/staticContent", "Scripts");

            ConfigurationElement clientCacheElement = staticContentSection.GetChildElement("clientCache");
            clientCacheElement["cacheControlMode"] = @"UseMaxAge";
            clientCacheElement["cacheControlMaxAge"] = TimeSpan.Parse("8765.00:00:00");

            serverManager.CommitChanges();
        }
    }