Как настроить кеш статического содержимого для каждой папки и расширения в IIS7?

Я хотел бы настроить правила в IIS7 для статического кэширования содержимого на моем веб-сайте ASP.NET.

Я видел эти статьи, в которых подробно описывается, как это сделать, используя элемент <clientCache /> в web.config:

Кэш клиента <clientCache> (IIS.NET)
Добавить срок действия или конец кэша для статического содержимого в IIS (переполнение стека)

Однако этот параметр применяется во всем мире к статическому контенту. Есть ли способ сделать это только для определенных каталогов или расширений?

Например, у меня могут быть два каталога, которым нужны отдельные настройки кеша:

/static/images
/content/pdfs

Можно ли настроить правила для отправки заголовков кеша (max-age, expires и т.д.) на основе расширений и путей к папкам?

Обратите внимание: я должен сделать это через web.config, потому что у меня нет доступа к консоли IIS.

Ответ 1

Вы можете установить определенные кеш-заголовки для всей папки в корневом каталоге web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <!-- Note the use of the 'location' tag to specify which 
       folder this applies to-->
  <location path="images">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

Или вы можете указать их в файле web.config в папке содержимого:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00:00:15" />
    </staticContent>
  </system.webServer>
</configuration>

Мне не известно о встроенном механизме для конкретных типов файлов.

Ответ 2

Вы можете сделать это для каждого файла. Используйте атрибут path для включения имени файла

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>

Ответ 3

У меня была такая же проблема. Для меня проблема заключалась в том, как настроить ограничение кэша на изображения. И я наткнулся на этот сайт, который дал некоторые сведения о процедуре, как можно справиться с проблемой. Надеюсь, что это будет полезно для ты тоже Ссылка: [https://varvy.com/pagespeed/cache-control.html]