Soru IIS 7'de tek tek bir dosyanın önbelleğe alınmasını, sunucu yapılandırma ayarlarını kullanarak nasıl devre dışı bırakırım?


ASP.NET uygulamasında tek bir javascript dosyasının önbelleğe alınmasını, uygulamadaki diğer dosyaların önbelleğini devre dışı bırakmadan değiştirmenin bir yolu var mı?

Azure'da IIS 7 üzerinde çalışıyor, bu yüzden bana bunu kontrol etmek için tek seçeneğimin web sunucusu etiketleri içinde olduğu görülüyor.

Şu anda folowwing yapılandırmasını kullanıyorum, ancak bu, tüm dosyalarda önbelleği devre dışı bırakıyor.      

     <modules runAllManagedModulesForAllRequests="true"/>

    <staticContent>
      <clientCache cacheControlMode="DisableCache"/>
    </staticContent>

  </system.webServer>

Sadece sık sık değişen tek bir javascript dosyasının önbelleğini devre dışı bırakmak istiyorum.

Mümkün mü?


25
2017-10-14 01:01


Menşei


Evet, mümkün, yapılandırma dosyanızda yapabilirsiniz: <staticContent> öğesini <location> konumuna getirin, (aşağıdaki mesajıma bakın) - jherax


Cevaplar:


Bu soruya daha yeni geldim; Belirli bir dosyadaki önbelleği devre dışı bırakmak için aşağıdakileri kullanabilirsiniz:

<configuration>
  <location path="path/to/the/file">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache" />
      </staticContent>
    </system.webServer>
  </location>
</configuration>

(Yolun web.config dosyasına göre olduğunu unutmayın)

Alternatif olarak, tek dosyayı kendi başına bir dizine koyun ve bu dizini kendi içindeki her şey için önbelleğe almayı devre dışı bırakan kendi web.config'sini verin;

<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Cache-Control" value="no-cache" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

[Her ikisi de Windows 7'de IIS7.5 üzerinde test edildi, ancak Azure'da Tamam'ın çalıştığını onaylamak zorunda kalacaksınız]


34
2018-02-08 13:45



İlk alternatifi yaptım ve Azure üzerinde çalışıyor. - Frode Lillerud
Kaynak denetimi veya sürekli entegrasyon yoluyla bir Azure Web Uygulaması'na yayınlanan statik içerik için mükemmel çalışır. Benim durumumda, üretim yapısının paket dosyaları için önbellek bozma adları oluşturmaya özen gösterdiği ve önbelleğe almayı istemediğim tümünün index.html olduğu bir Angular CLI yerleşik uygulaması. Teşekkürler! - Brian Noyes


Yukarıdaki cevabın bir "profiller" etiketi eksik gibi görünüyor

<caching>
  <profiles>
    <add extension=".js" kernelCachePolicy="DontCache" policy="DontCache"/>
  </profiles>
</caching>

8
2018-02-24 23:56



Sadece burada yinelenen 'politika =' DontCache '' benim için çalışmadı ama 'policy =' DisableCache '' işe yaradı. - Ant
DontCache benim için hile yaptım - Flo


Belirli uzantılara bir önbellekleme profili uygulayabileceğiniz System.WebServer / Caching sınıfına bakmak isteyeceksiniz. Bu, en azından .js ile biten tüm Javascript dosyaları için onu kontrol etmenizi sağlayacaktır.

<system.webServer>
...

   <caching>
      <add extension=".js" policy="DontCache" kernelCachePolicy="DontCache" />
   </caching>

</system.webServer>

Bu, her iki süreçte de önbelleğe almayı ve buluttan kernel önbelleğe almayı devre dışı bırakmalıdır.

ben düşünmek Bu web.config dosyasını sadece dosyanızı içeren bir klasörde oluşturabilir ve sadece bu klasör seviyesinde .js için önbelleğe almayı devre dışı bırakır. Dürüstçe kendim denemedim, sadece test edebileceğiniz bir öneri.


Bunun ötesinde, önbelleğe alma yapılandırmasıyla ilgili IIS belgelerine göz atın:

/ Caching: http://www.iis.net/ConfigReference/system.webServer/caching

/ Caching / Profilleri: http://www.iis.net/ConfigReference/system.webServer/caching/profiles

/ Caching / Profiller / ekleyin: http://www.iis.net/ConfigReference/system.webServer/caching/profiles/add

Umarım, bu yapılandırma etiketleri hakkında bazı araştırmalar yardımcı olacaktır.

Değilse, önbelleğe alma denetiminizi söz konusu dosyaya filtreleyebilen IIS istek borusuna ekleyebileceğiniz özel bir HTTP Modülü uygulamanızı öneririz.

** Bunun değeri, yalnızca IIS davranışıdır ve Azure'un içinde veya dışında farklı olmayacaktır. Bu nedenle, Dev kumaş veya Azure testiyle uğraşmadan bu yerel uygulamayı kolayca test edebilirsiniz.


7
2017-10-14 15:46



Bu cevap, yapılandırma için <profiles> etiketinde eksik. Doğru format için "Ne Olacak?" Yanıtına bakın. - Ant
Ayrıca şunu da belirtmeliyim: 'policy =' DontCache '' benim için çalışmadı ama 'policy =' DisableCache '' işe yaradı. - Ant


Bu klasöre bir web.config ekleyerek klasör düzeyinde bir uzantıyı kaldırarak klasör düzeyinde çıkış önbelleğini devre dışı bırakabilirsiniz.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
        <caching>
            <profiles>
                <remove extension=".js" />
            </profiles>
        </caching>

  </system.webServer>
</configuration>

şimdi bu klasör, .js ile biten dosyalar için çıktı önbelleğe alma özelliğini etkinleştirmeyecek


3
2018-01-21 13:38





Evet, bu mümkün, yapılandırma dosyasında yapabilirsiniz:
(Görmek https://stackoverflow.com/a/4821328/2247494)

<configuration>
    <location path="cache.manifest">
      <system.webServer>
        <staticContent>
          <clientCache cacheControlMode="DisableCache" />
        </staticContent>
      </system.webServer>
    </location>
</configuration>

0
2018-05-21 16:34





IIS panelini aç.

İlgili uygulamayı sitelerden açın, ardından belirli bir dosyayı içeren klasöre gidin.

Şimdi sağ bölmeden içerik görünümüne geçin

İstediğiniz dosyayı seçin

Şimdi "Özellik Görünümü'ne Geç" i seçmek için dosyaya sağ tıklayın.

Oradan HTTP Yanıt Başlıkları'nı seçin, yeni başlık eklemek için "Ekle" ye tıklayın, "önbellek" değeri olan "Önbellek Denetimi" başlığını ekleyin.


0
2018-06-15 10:47