Jak skonfigurować statyczną pamięć podręczną zawartości dla folderu i rozszerzenia w usługach IIS7?

143

Chciałbym skonfigurować reguły w usługach IIS7 do buforowania zawartości statycznej w mojej witrynie ASP.NET.

Widziałem te artykuły, w których szczegółowo opisano, jak to zrobić za pomocą <clientCache />elementu w web.config:

Pamięć podręczna klienta <clientCache>(IIS.NET) Dodaj wygasanie
lub nagłówek kontroli pamięci podręcznej do zawartości statycznej w usługach IIS (przepełnienie stosu)

Wydaje się jednak, że to ustawienie ma zastosowanie globalne do całej zawartości statycznej. Czy jest sposób, aby to zrobić tylko dla niektórych katalogów lub rozszerzeń?

Na przykład mogę mieć dwa katalogi, które wymagają oddzielnych ustawień pamięci podręcznej:

/static/images
/content/pdfs

Czy to możliwe, aby skonfigurować zasady wysyłania nagłówków cache ( max-age, expiresitp) na podstawie rozszerzeń i folderów ścieżek?

Należy pamiętać, że muszę mieć możliwość tego za pośrednictwem, web.configponieważ nie mam dostępu do konsoli IIS.

frankadelic
źródło

Odpowiedzi:

217

Możesz ustawić określone nagłówki pamięci podręcznej dla całego folderu w katalogu głównym 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>

Lub możesz określić je w web.configpliku w folderze zawartości:

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

Nie znam wbudowanego mechanizmu do kierowania na określone typy plików.

Kev
źródło
1
Wspaniały. Czy poleciłbyś mi książkę o IIS 7? Chciałbym się dowiedzieć o tych rzeczach. Dzięki.
vtortola
5
@vtortola - nie możesz się pomylić z [zestawem zasobów IIS7] (: amazon.co.uk/dp/0735624410 ), jest on całkiem przydatny. Książka Wrox Pro IIS7 też nie jest zła. TBH Uczyłem się głównie z witryny odniesienia konfiguracji IIS.NET: iis.net/ConfigReference oraz z podsłuchiwania%systemroot%\system32\inetsrv\config\applicationhost.config pliku i powiązanych znajomych.
Kev,
7
Czy ktoś wie, czy to jest rekurencyjne? np. jeśli masz podfoldery pod ścieżką do obrazów, czy będzie je również buforować?
StuffandBlah
1
Należy zwrócić uwagę na to, że przeglądarka wydaje się uwzględniać wielkość path=""liter
Chris S,
9
@StuffandBlah Tak, jest rekurencyjny. Po prostu wypróbowałem to sam i usługi IIS zastosowały te same ustawienia kontroli pamięci podręcznej do wszystkich żądań dotyczących plików w podfolderach folderu, który określiłem jako „lokalizację”.
Erik Öjebo
68

Możesz to zrobić dla każdego pliku. Użyj atrybutu path, aby dołączyć nazwę pliku

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <location path="YourFileNameHere.xml">
        <system.webServer>
            <staticContent>
                <clientCache cacheControlMode="DisableCache" />
            </staticContent>
        </system.webServer>
    </location>
</configuration>
Jeff Cuscutis
źródło
1
A jeśli chcesz zastosować go do wszystkich plików o określonym rozszerzeniu? czy sam plik .xml lub * .xml będzie działał?
Zulgrib,
2
@Zulgrib, aby zastosować go do konkretnego rozszerzenia, możesz użyć reguł przepisywania ruchu wychodzącego: stackoverflow.com/questions/32987486/ ...
jotap
@Zulgrib W jaki sposób używamy znacznika lokalizacji dla więcej niż jednego pliku, ale nie dla wszystkich plików danego typu. Na przykład kilka plików jpg w folderze głównym, ale nie wszystkie?
Rahatur
-2

Miałem ten sam problem, dla mnie problem polegał na tym, jak skonfigurować limit pamięci podręcznej do obrazów i natknąłem się na tę stronę, która dała wgląd w procedurę, w jaki sposób można rozwiązać problem.Mam nadzieję, że będzie to pomocne również dla Ciebie Link : [ https://varvy.com/pagespeed/cache-control.html]

Vikum Charuka Egodapitiya
źródło
2
Rozważ dodanie informacji z linku do odpowiedzi zgodnie ze stackoverflow.com/help/how-to-answer : Zachęcamy do umieszczania linków do zewnętrznych zasobów, ale dodaj kontekst do łącza, aby inni użytkownicy mieli pojęcie, co to jest i dlaczego tam jest. Zawsze cytuj najbardziej odpowiednią część ważnego linku, na wypadek gdyby strona docelowa była nieosiągalna lub została trwale wyłączona.
Greg the Incredulous