Як налаштувати статичний кеш вмісту на папку та розширення у IIS7?


143

Я хотів би встановити правила в IIS7 для кешування статичного вмісту на своєму веб-сайті ASP.NET.

Я бачив ці статті, в яких детально описано, як це зробити за допомогою <clientCache />елемента в web.config:

Клієнтський кеш <clientCache>(IIS.NET) Додати термін дії
або заголовок кеш-керування для статичного вмісту в IIS (переповнення стека)

Однак, схоже, ця настройка застосовується глобально до всього статичного вмісту. Чи є спосіб зробити це лише для певних каталогів або розширень?

Наприклад, у мене можуть бути два каталоги, які потребують окремих налаштувань кешу:

/static/images
/content/pdfs

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

Зверніть увагу, я повинен бути в змозі зробити це через web.config що у мене немає доступу до консолі IIS.

Відповіді:


217

Ви можете встановити конкретні заголовки кешу для всієї папки в будь-якому корені 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>

Мені не відомий вбудований механізм націлювання на конкретні типи файлів.


1
Чудово. Чи рекомендуєте ви мені книгу про IIS 7? Я хотів би дізнатися про ці речі. Дякую.
vtortola

5
@vtortola - ви не можете помилитися з набором ресурсів [IIS7] (: amazon.co.uk/dp/0735624410 ), це насправді досить корисно. Книга Wrox Pro IIS7 теж непогана. TBH Я дізнався здебільшого з довідкового веб-сайту конфігурації IIS.NET: iis.net/ConfigReference та з роздумів про %systemroot%\system32\inetsrv\config\applicationhost.configфайл та пов’язаних з ним друзів.
Кев

7
Хтось знає, чи це рекурсивно? Наприклад, якщо у вас є підпапки під зображеннями, вони також кешуватимуть їх?
StuffandBlah

1
Варто зазначити, що веб-переглядач відображає path=""регістри
Chris S

9
@StuffandBlah Так, це рекурсивно. Я просто спробував це, і IIS застосував однакові налаштування кеш-керування до всіх запитів на файли в підпапках папки, яку я вказав як "location".
Ерік Öjebo

68

Ви можете це робити на основі файлу. Використовуйте атрибут path, щоб включити ім'я файлу

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

1
А якщо ви хочете застосувати його до всіх файлів конкретного розширення? буде працювати .xml або * .xml самостійно?
Zulgrib

2
@Zulgrib , щоб застосувати його до розширення конкретного ви можете використовувати вихідні правила перезапису: stackoverflow.com/questions/32987486 / ...
jotap

@Zulgrib Як ми використовуємо тег локації для більш ніж одного файлу, але не для всіх типів файлів. Наприклад, кілька файлів jpg у кореневій папці, але не всі?
Рахатур

-2

У мене була така ж проблема. Для мене проблема полягала в тому, як налаштувати обмеження кешу для зображень. : [ https://varvy.com/pagespeed/cache-control.html]


2
Будь ласка, подумайте, як додати відповідь до своєї відповіді у відповідності до stackoverflow.com/help/how-to-answer : посилання на зовнішні ресурси рекомендуються, але будь ласка, додайте контекст навколо посилання, щоб ваші колеги користувачі мали уявлення про те, що це таке і чому це там. Завжди цитуйте найбільш релевантну частину важливого посилання на випадок, якщо цільовий сайт недоступний або перебуває постійно в режимі офлайн.
Грег Невірний
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.