2010-03-11 17 views
5

tepkisini önbelleğe sunucuda ve istemci üzerinde bir http işleyici yanıtı önbelleğe mümkün mü?bir ASP.NET HTTP işleyicisi sunucu ve istemci tarafında

Bu hile yapıyor gibi görünmüyor:

_context.Response.Cache.SetCacheability (HttpCacheability.Public); _context.Response.Cache.SetExpires (DateTime.Now.AddDays (7));

_context ıhttphandler uygulanmasına ProcessRequest yöntemi için bir bağımsız değişken olarak geçirilen HttpContext olup.

Herhangi bir fikrin var mı?

Güncelleme: istemci httphandler aracılığıyla yüklenen önbellek görüntüleri yok, ama başka bir istemci aynı çağrıyı yaparsa, sunucu önbelleğe sahip değil. Dolayısıyla, görüntüyü isteyen her istemci için, sunucu veritabanına (ve filestream) gider. Bir önbellekleme profili ile birlikte bir httphandler yerine bir aspx sayfası kullanırsak, görüntüler hem istemcide hem de sunucuda önbelleğe alınır.

+0

Başlıklar gerçekten istemcide alınan paketin içinde olup olmadığını kontrol etmek için Fiddler'ı kullanmayı denediniz mi? – Timores

+0

@Timores İstemci, işleyiciye çağrıları önbelleğe alır, ancak başka bir istemci aynı çağrıyı yaparsa, sunucu önbelleğe almaz. –

cevap

3

Yorumlardaki cevabınız için teşekkür ederiz.

Cache.SetCacheability bir proxy veya müşteri değil sunucuda, önbelleğe izin verilip verilmeyeceğini belirlemek için kullanılır.

o sunucuda bir HTTP işleyicisi çıktısını önbelleğe nasıl açıklanabilir IIS 7 göz at. IIS7 ile

+0

Thx, Timores, bunu kontrol edeceğiz! Bir aspx sayfası ile sunucu düzeyinde önbelleğe alabilirsiniz, ancak bir httplevel ile bunu IIS'de yapmalısınız (ya da web.config'deki değişiklikleri kaydedecek misiniz?) –

4

, bu web.config'de yapılabilir.

/ashxfiles/myhandler.ashx

... ve sorgu dizesi params göre değişir istiyorum:

Örneğin, ashx url varsayalım

id lang

Aşağıdakileri web.confi dosyanıza ekleyin. g:

<location path="ashxfiles"> 
    <system.webServer> 
     <caching> 
      <profiles> 
       <add extension=".ashx" policy="CacheForTimePeriod" duration="00:00:10" varyByQueryString="id, lang" /> 
      </profiles> 
     </caching> 
    </system.webServer> 
</location> 

Bu kural dizindeki tüm .ashx dosyalar için geçerlidir, yani önbellek ayarları daha ayrıntılı denetim gerekiyorsa ayrı klasörlerde .ashx dosyaları koymak isteyebilirsiniz.

İlgili konular