2010-03-11 16 views
5

की प्रतिक्रिया कैशिंग करना सर्वर पर और क्लाइंट पर http हैंडलर की प्रतिक्रिया कैश करना संभव है?एएसपी.NET HTTP हैंडलर सर्वर और क्लाइंट साइड

यह चाल कर रही प्रतीत नहीं होता:

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

_context HTTPContext IHttpHandler कार्यान्वयन पर ProcessRequest विधि के लिए एक तर्क के रूप में पारित किया गया है।

कोई विचार?

अपडेट: क्लाइंट कैश छवियों को कैश करता है जो प्रेजेंटफैंडर के माध्यम से लोड होते हैं, लेकिन यदि कोई अन्य क्लाइंट एक ही कॉल करता है, तो सर्वर को कैश नहीं मिला है। तो प्रत्येक क्लाइंट के लिए जो छवि के लिए पूछता है, सर्वर डेटाबेस (और filestream) पर जाता है। यदि हम एक कैशिंग प्रोफाइल के साथ एक एस्पेक्सफ़ैंडर के बजाय एएसपीएक्स पेज का उपयोग करते हैं, तो छवियों को क्लाइंट और सर्वर दोनों पर कैश किया जाता है।

+0

क्या आपने यह देखने के लिए फिडलर का उपयोग करने की कोशिश की है कि हेडर वास्तव में ग्राहक पर प्राप्त पैकेट में हैं? – Timores

+0

@ टिमोरस क्लाइंट हैंडलर को कैश कॉल करता है, लेकिन यदि कोई अन्य क्लाइंट एक ही कॉल करता है, तो सर्वर इसे कैश नहीं करता है। –

उत्तर

3

टिप्पणियों में आपके उत्तर के लिए धन्यवाद।

कैश .etCacheability का उपयोग यह निर्धारित करने के लिए किया जाता है कि प्रॉक्सी या क्लाइंट को कैश करने की अनुमति है या नहीं, सर्वर पर नहीं।

IIS 7 पर एक नज़र डालें जहां यह समझाया गया है कि सर्वर पर HTTP हैंडलर के आउटपुट को कैश कैसे किया जाए।

+0

Thx, Timores, हम इसे जांच लेंगे! अजीब बात यह है कि एक एएसपीएक्स पेज के साथ आप सर्वर स्तर पर कैश कर सकते हैं, लेकिन एक प्रेजम्प्लेवल के साथ आपको आईआईएस में ऐसा करने की ज़रूरत है (या iis web.config में बदलावों को सहेज लेगा?) –

4

आईआईएस 7 के साथ, यह web.config में किया जा सकता है।

उदाहरण के लिए, मान लीजिए कि आपकी ashx यूआरएल है:

/ashxfiles/myhandler.ashx

... और आप querystring पैरामीटर के हिसाब से बदलती हैं:

आईडी , लैंग

अपने web.confi में निम्नलिखित जोड़ें छ:

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

यह नियम निर्देशिका में सभी .ashx फ़ाइलों पर लागू होता है, तो आप आप कैश सेटिंग्स पर और सूक्ष्म नियंत्रण की जरूरत है अलग फ़ोल्डर में अपने .ashx फ़ाइलें डाल करने के लिए चाहते हो सकता है।

संबंधित मुद्दे