Добавление кеша клиента через httpmodule для пользовательской папки - PullRequest
0 голосов
/ 13 марта 2020

Я сейчас использую в 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 для кэширования этих каталогов там.

Я провел небольшое исследование и наткнулся на эту статью от Microsoft на clientCache, которая показывает мне, как обновить ее в httpModule с помощью c#

  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 для этой явной папки?

1 Ответ

1 голос
/ 16 марта 2020

Например. если вы хотите установить clientcache для папки "Scripts", добавив раздел <location="Scripts"> в web.config.

Тогда вы можете попробовать этот 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();
        }
    }
...