IIS7'de klasör ve uzantı başına statik içerik önbelleği nasıl yapılandırılır?


143

ASP.NET web sitemde statik içerik önbelleğe almak için IIS7'de kurallar ayarlamak istiyorum.

<clientCache />Öğeyi kullanarak nasıl yapılacağını ayrıntılarıyla anlatan bu makaleleri gördüm web.config:

İstemci Önbelleği <clientCache>(IIS.NET) IIS'deki statik içeriğe Geçerlilik Süresi
veya Önbellek Denetimi Başlığı Ekleme (Yığın Taşması)

Ancak, bu ayar tüm statik içeriğe global olarak uygulanır gibi görünmektedir. Bunu sadece belirli dizinler veya uzantılar için yapmanın bir yolu var mı?

Örneğin, ayrı önbellek ayarlarına ihtiyaç duyan iki dizinim olabilir:

/static/images
/content/pdfs

O (önbellek başlıklarını gönderme kurallarını ayarlamak mümkün mü max-age, expiresuzantıları ve klasör yolları dayalı, vs)?

web.configIIS konsoluna erişimim olmadığından bunu yapabilmem gerektiğini lütfen unutmayın .

Yanıtlar:


217

Kökünüzdeki bir klasörün tamamı için belirli önbellek başlıkları ayarlayabilirsiniz 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>

Veya bunları web.configiçerik klasöründeki bir dosyada belirtebilirsiniz :

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

Belirli dosya türlerini hedefleyen yerleşik bir mekanizmanın farkında değilim.


1
Harika. Bana IIS 7 hakkında bir kitap önerir misiniz? Bunları öğrenmek istiyorum. Teşekkürler.
vtortola

5
@vtortola - [IIS7 kaynak kiti] (: amazon.co.uk/dp/0735624410 ) ile yanlış gidemezsiniz , aslında oldukça kullanışlıdır. Wrox Pro IIS7 kitap ya da kötü değil. TBH Çoğunlukla IIS.NET yapılandırma başvuru sitesinden öğrendim: iis.net/ConfigReference ve %systemroot%\system32\inetsrv\config\applicationhost.configdosya ve ilgili arkadaşlar hakkında alay .
Kev

7
Bunun özyinelemeli olup olmadığını bilen var mı? Örneğin, resim yolunuzun altında alt klasörleriniz varsa, bunları da önbelleğe alır mı?
StuffandBlah

1
Dikkat edilmesi gereken bir şey, tarayıcının büyük / path=""küçük harfe duyarlı olduğu görülüyor
Chris S

9
@StuffandBlah Evet, özyinelemeli. Sadece kendim denedim ve IIS, "konum" olarak belirttiğim klasörün alt klasörlerindeki tüm dosya isteklerine aynı önbellek kontrol ayarlarını uyguladı.
Erik Öjebo

68

Her dosya için ayrı ayrı yapabilirsiniz. Dosya adını dahil etmek için path niteliğini kullanın

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

1
Ve belirli bir uzantının tüm dosyalarına uygulamak istiyorsanız? .xml veya * .xml tek başına çalışır mı?
Zulgrib

2
@Zulgrib, belirli bir uzantıya uygulamak için giden yeniden yazma kurallarını kullanabilirsiniz: stackoverflow.com/questions/32987486/…
jotap

@Zulgrib Konum etiketini bir türden tüm dosyalar için değil, birden fazla dosya için nasıl kullanırız? Örneğin kök klasördeki birkaç jpg dosyası var ama hepsi değil mi?
Rahatur

-2

Benim için sorun, görüntüler için önbellek sınırının nasıl yapılandırılacağıydı.Ve bu siteyle karşılaştım, bu da sorunun nasıl ele alınabileceğine dair prosedür hakkında bazı bilgiler verdi. : [ https://varvy.com/pagespeed/cache-control.html]


2
Lütfen stackoverflow.com/help/how-to-answer uyarınca yanıtınıza bağlantıdan bazı bilgiler eklemeyi düşünün : Dış kaynaklara bağlantılar teşvik edilir, ancak diğer kullanıcılarınızın ne olduğu hakkında fikir sahibi olmaları için lütfen bağlantının çevresine bağlam ekleyin. ve neden orada. Hedef siteye erişilemiyorsa veya kalıcı olarak çevrimdışı olursa, her zaman önemli bir bağlantının en alakalı kısmını belirtin.
İnanılmaz Greg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.