2009-12-22 13 views
6

İki bölümlü soru (bölümler birbiriyle yakından ilişkilidir): IIS7'nin kullandığı varsayılan OOTB ETag ilkesiyle, Neden-Yok-Eşleşmesi/304 etkileşimini neden görmüyoruz? sayfalarda dolaşıyoruz? resim için bir 304 gidiş-dönüş üretemeyen sayfayaETags, IIS7, Çekirdek Önbellek İlkesi (enableKernelCache)

Content-Type image/png 
Last-Modified Thu, 03 Dec 2009 15:51:56 GMT 
Accept-Ranges bytes 
Etag "a8a0628a3074ca1:0" 
Server Microsoft-IIS/7.0 
X-Powered-By ASP.NET 
Date Tue, 22 Dec 2009 19:47:36 GMT 
Content-Length 1780 

... ve henüz müteakip girişler:

başlıklar vardır, örneğin, boş-cache istek için döndü? Ayrıca

, IIS7 applicationHost dosya vardır varsayılan aşağıdaki (1):

<caching enabled="true" enableKernelCache="true"> 
    </caching> 

mu uzantılarını kayıt ihtiyacının sizi kurtararak, tüm statik dosyalara uzatmakenableKernelCache = 'true'

<caching> 
    <profiles> 
    <add extension=".gif" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> 
    <add extension=".png" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> 
    <add extension=".js" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> 
    <add extension=".css" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> 
    <add extension=".jpg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> 
    <add extension=".jpeg" policy="DontCache" kernelCachePolicy="CacheUntilChange" duration="0.00:01:00" location="Any" /> 
    </profiles> 
</caching> 

(1),% systemroot% \ System32 \ inet: açıkça çekirdek düzenine (2) olarak CacheUntilChange vermek için SRV \ yapılandırma \ applicationHost.config

(2) http://labs.episerver.com/en/Blogs/Per/Archive/2009/3/Configuring-cache-expiration-on-IIS-7/

cevap

4

ETAGlar kullanma ve hiçbiri-eşleşiyorsa-/ değişiklikte-yana bir şekilde tarayıcı bağlıdır ilişkili. Birkaç farklı tarayıcıyı deneyebilir ve neler olduğunu görebilirsiniz. Genel olarak, eğer açık bir son kullanma süresi belirlemezseniz, dediğiniz gibi 304'leri görmeyi beklerdim.

Çekirdek önbelleğe alma için, varsayılan olarak statik dosyalar için etkindir. önbelleğinde bulunan dosyalar hakkında bilgileri gösterir

netsh http show cachestate 

: neler olduğunu görmek yardımcı olmak için, yararlı aşağıdaki komutu çalıştırmak için buldum.

Çekirdeklerin önbelleğe alınmadan önce, dosyaların normalde belirli bir zaman aralığında birkaç kez atıfta bulunulması gerektiğini unutmayın.

+0

Teşekkürler, Rick; Hem IE8 hem de FF 3.5 denedim ve bu davranışı biraz garip buldum - herhangi bir yerde belgelenmiş mi? IIS7 (OOTB) son kullanma yetkisi vermiyor, yalnızca ETag; ve sayfadaki sonraki istekler bu nesneler için 304s üretmiyor mu? – Nariman

+0

Farkında olduğum tek belge HTTP belirtimidir. Oturum başına optimizasyon görüyorsanız merak ediyorum. Tarayıcıdan (tüm pencerelerden) çıkmayı, yeniden başlatmayı ve 304'lerde sonuç olup olmadığını görmeyi denediniz mi? Açıkladığınız davranışı sergileyen bir genel sayfa var mı? – RickNZ

+0

Orijinal yanıtların bir Önbellek Denetleme üstbilgisi olmadığından, tarayıcı (biraz) önbellekle ilgili kendi politikasını uygulamakta serbesttir. Bu durumda, görüntüleri oturumun süresi için önbelleğe almayı seçer. IE8'deki sekmeyi sitenizle kapatır ve ardından yeni bir sekme açar ve aynı sayfaya geri dönerseniz, tüm görüntüler için bir grup IMS/INM isteği ve 304 yanıtı görürsünüz. – RickNZ