2010-11-17 14 views
9

पृष्ठभूमिआउटपुट कैशिंग अभी भी जोड़ने कैश-नियंत्रण: नहीं कैश तब भी जब यह विकलांग

एक ग्राहक हमारी वेब एप्लिकेशन चल रहा है है। HTTPS से अधिक और (काफी अच्छी तरह से जानते हैं) IE8 में "फ़ाइल को कैश में लिखा नहीं जा सकता" त्रुटि हो रही है जब वे पीडीएफ/एक्सेल/शब्द फ़ाइल देखने का प्रयास करते हैं क्योंकि प्रतिक्रिया में HTTP Cache-Control:no-cache निर्देश होता है। बात यह है कि यह हमारा ऐप (या इसकी कॉन्फ़िगरेशन) नहीं है जो इस निर्देश को जोड़ रहा है।

बाद मैं जांच कर रही का एक सा है कि IIS7 पेज उत्पादन कैशिंग सुविधा भी इस शीर्ष लेख में जोड़ सकते हैं प्रतिक्रिया हेडर को Cache-Control:no-cache, private जोड़ने का असर नहीं होगा उदाहरण

<caching enabled="false" enableKernelCache="false"> 
    <profiles> 
     <add extension=".htm" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" /> 
    </profiles> 
</caching> 

के लिए, की खोज की।

मेरे प्रश्न

लेकिन आश्चर्य की बात (IMO) बात है कि जब भी आप माना जाता है कि अक्षम सुविधा (कि enabled="false" ऊपर मेरी config स्निपेट में देखें), प्रतिक्रिया हेडर अभी भी Cache-Control:no-cache, private साथ भेजे जा रहे हैं ।

क्या मैं इस से आश्चर्यचकित होने के लिए बेवकूफ हूं (मुझे लगता है कि मैं शायद हूं)?

उत्तर

5

आप अकेले नहीं हैं: http://forums.iis.net/t/1152306.aspx

हम भी एक ही समस्या थी। मुझे इस "फीचर" के बारे में कोई दस्तावेज नहीं मिला है, इसलिए मुझे लगता है कि यह एक बग है।

हमने केवल कैशिंग टैग को हटाने का निर्णय लिया और इसके बजाय क्लाइंट कैश टैग का उपयोग करने का निर्णय लिया।

4

'।' को हटाएं विस्तार विशेषता के भीतर: अपने web.config में जोड़ने के लिए

<profiles> 
    <add extension="htm" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" /> 
</profiles> 
+0

यह अधिकार सही उत्तर होना चाहिए। – Prescient

+1

नहीं, यह सही नहीं है। आपको शायद यह काम मिल गया है क्योंकि आपके पास कहीं और परिभाषित अनुभाग '' अनुभाग है। जब आप डॉट को हटाते हैं, तो वह एक्सटेंशन बेकार हो जाता है, जो प्रभावी होने के लिए '' अनुभाग बनाता है। – chenz

+0

** यह सही है! ** मैंने अभी यह "जानने" की कोशिश की है, यह काम नहीं करेगा क्योंकि, उदाहरण के लिए, आईआईएस आपको आउटपुट कैशिंग के लिए जीयूआई में देता है, जिसमें आपको '।' विस्तार से पहले ... ** लेकिन यह काम किया! ** मैं आपको आश्वासन देता हूं, यह आईआईएस 8 के लिए सही जवाब है - यहां देखें http://i66.tinypic.com/2e249af.png – Jimbo

0

प्रयास करें, यह पूरी तरह से मेरे लिए कैश नियंत्रण हेडर हटाया:

<system.Webserver> 
<staticContent> 
<clientCache cacheControlMode="NoControl" /> 
</staticContent> 
</system.Webserver> 
7

क्या प्रभावी ढंग से no-cache से छुटकारा मिला मुझे जोड़ने के लिए किया गया था location="Any"add तत्व है, जो बजाय लिखते Cache-Control:public रहे हैं:

<caching enabled="false" enableKernelCache="false"> 
    <profiles> 
     <add extension=".htm" ... location="Any" /> 
    </profiles> 
</caching> 

के अभाव मेंविशेषता, आईआईएस डिफ़ॉल्ट Cache-Control:no-cache पर है। अन्य संभावित मान Client, Downstream, Server, या ServerAndClient हैं। विवरण here

+0

Grrr, वह 'यहां विवरण' iis.net पृष्ठ, यह उदाहरण उदाहरण कॉन्फ़िगरेशन '' जो ** ** में 'स्थान' शामिल नहीं है, जिसका मतलब है कि मैंने अभी अपने वेब सर्वर पर शपथ ली है कि यह ठीक से काम करे और यहां समाप्त हो गया। – icc97

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