20

मैं एक बंडल अनुरोध से भेजे गए कैश हेडर को बदलना चाहता हूं। वर्तमान में यह User-Agent से भिन्न है लेकिन मैं यह नहीं चाहता हूं, क्या बंडल अनुरोध द्वारा भेजे गए शीर्षकों को बदलने का कोई तरीका है?एमवीसी 4 बंडलिंग कैश हेडर

System.Web.Optimization असेंबली में त्वरित रूप से देखने के बाद मैं देख सकता हूं कि हेडर Bundle.SetHeaders में सेट हो सकते हैं जो एक निजी स्थिर कार्य है इसलिए मुझे यह संभव नहीं लगता है हालांकि मुझे गलत साबित होना अच्छा लगेगा।

+4

मुझे इस शीर्षलेख को पहली जगह जोड़ने के लिए किसी भी तर्क से किसी भी विचार में रुचि होगी - उदा। क्या उपयोगकर्ता एजेंट के आधार पर बंडलिंग कोड अलग-अलग व्यवहार करता है? या यह सिर्फ एक सावधानी है? – Jamie

+0

हम ऐसा क्यों करते हैं, इसके लिए वीएस पेज इंस्पेक्टर फीचर के लिए जरूरी है जो आईई का उपयोग कर कस्टम यूजर एजेंट भेजता है, इसलिए आईई के कैश को पेज इंस्पेक्टर को अनुरोधों को गड़बड़ करने से रोकने के लिए, या वीएस के बाहर आईई को पेज इंस्पेक्टर बंडल की सेवा करने से रोकने के लिए । –

+0

@ हाओकंग मुझे एक ही समस्या है, मैं 'निजी' के बजाय कैश-कंट्रोल हेडर वैल्यू को 'सार्वजनिक, अधिकतम आयु = 31536000' पर सेट करने और एटाग हेडर भी जोड़ने में सक्षम होना चाहता हूं। ऐसा लगता है कि इनमें से दोनों वर्तमान में संभव नहीं हैं? –

उत्तर

10

यह ऐसा कुछ नहीं है जिसे हम वर्तमान में आज पेश करते हैं। हम केवल BundleRepsonse पर कैशेबिलिटी प्रॉपर्टी का पर्दाफाश करते हैं कि एक आईबंडल ट्रान्सफॉर्म बदल सकता है। और हाँ हम स्पष्ट रूप से निम्नलिखित बातें सेट:

   HttpCachePolicyBase cachePolicy = context.HttpContext.Response.Cache; 
       cachePolicy.SetCacheability(bundleResponse.Cacheability); 
       cachePolicy.SetOmitVaryStar(true); 
       cachePolicy.SetExpires(DateTime.Now.AddYears(1)); 
       cachePolicy.SetValidUntilExpires(true); 
       cachePolicy.SetLastModified(DateTime.Now); 
       cachePolicy.VaryByHeaders["User-Agent"] = true; 

हम एक काम मद इस खुल जाएगा और इस अधिक एक्स्टेंसिबल/भविष्य में अनुकूलन बनाने के लिए हमारे बैकलॉग की है।

+3

इस परिवर्तन पर समयरेखा के बारे में कोई संकेत है, इस हेडर का प्रभाव सीडीएन एकीकरण के साथ विनाश करता है –

+2

समस्या ट्रैकर यूआरएल: https://aspnetoptimization.codeplex.com/workitem/136। एक संभावित कामकाज का भी उल्लेख है। – janv8000

0

janv8000's comment on this response में उल्लेखित एक कार्यवाही है। आप अपने वेब सर्वर पर निम्न URL रीराइट नियम जोड़ने की जरूरत:

<system.webServer> 
    <rewrite> 
     <outboundRules> 
      <rule name="Cache Bundles" preCondition="IsBundles" patternSyntax="ExactMatch"> 
       <match serverVariable="RESPONSE_Vary" pattern="User-Agent" /> 
       <action type="Rewrite" value="Accept-Encoding" /> 
      </rule> 
      <preConditions> 
       <preCondition name="IsBundles" patternSyntax="Wildcard"> 
        <add input="{URL}" pattern="*/bundles/*" /> 
       </preCondition> 
      </preConditions> 
     </outboundRules> 
    </rewrite> 
</system.webServer> 

जाहिर है आप अपने बंडल फ़ोल्डर में अपने सभी बंडलों है पर ध्यान देना या IsBundles पूर्व शर्त के हिसाब से बदलने की जरूरत है।