2014-05-20 18 views
5

में काम नहीं करता है। मैं चार्ट बनाने के लिए अपने कुछ महंगे कैश करने की कोशिश कर रहा हूं। इसलिए मैं Web.config में ऐसा किया:एएसपी.नेट आउटपुट कैश भिन्न होता हैप्रैरम Web.config

<caching> 
    <outputCacheSettings> 
     <outputCacheProfiles> 
      <!-- 4 hours : 60 sec x 60 min x 4 hour = 14400 sec --> 
      <add name="ChartCacheProfile" duration="14400" varyByParam="none" /> 
     </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 

और मैं अपने Controller में यह कहा:

[OutputCache(CacheProfile="ChartCacheProfile")] 
public ActionResult GenerateChart() 

लेकिन यह काम नहीं करता है ..., परिणाम अभी भी संचित नहीं कर रहा है और Action निष्पादित किया जा रहा है हमेशा। इसे पूरा करने में 1 मिनट तक लग सकते हैं।

कृपया ध्यान दें कि यूआरएल हर बार विभिन्न पैरामीटर के साथ बुलाया जा रहा है। पैरामीटर उत्पन्न होने वाले चार्ट से असंबंधित है। यही कारण है कि मैंने varyByParam="none" रखा।

+0

'काम नहीं करता' से आपका क्या मतलब है? यूआरएल को आगे की कॉल कैश से वापस या कार्रवाई में प्रवेश कर रहे हैं? – haim770

+0

जब आप किसी पैरामीटर को बदले बिना रीफ्रेश करते हैं, तो क्या अभी भी एक्शन हिट हो जाता है? – haim770

+0

जब मैं पैरामीटर को बदले बिना रीफ्रेश करता हूं, तो यह एक्शन हिट नहीं करता है (यह कैशिंग है!)। जब मैं 'Web.config' के बजाय 'भिन्न'' 'नियंत्रक' को 'भिन्न' टाइप नहीं करता हूं, तो कैश काम करता है .. मुझे संदेह है कि यह एक बग है। –

उत्तर

5

मुझे संदेह है कि यह वास्तव में एक बग है। क्या मेरे लिए काम किया OutputCache विशेषता में स्पष्ट रूप से VaryByParam स्थापित करने के लिए है:

[OutputCache(CacheProfile="ChartCacheProfile", VaryByParam="None")] 
public ActionResult GenerateChart() 
+4

https://github.com/aspnetwebstack/aspnetwebstack/blob/master/src/System.Web.Mvc/OutputCacheAttribute.cs#L23 कारण हो सकता है। – haim770

+0

तो क्या यह एक बग या डिजाइन द्वारा है? –

+0

कहना मुश्किल है ... – haim770

1

मैं इस मुद्दे से थक गया और प्रत्येक कार्य के लिए varyByParam सेट करने के लिए किया है। तो यहां आउटपुट कैश विशेषता के लिए सरल कोड है जो web.config से भिन्न होता है। https://github.com/unconnected4/MvcOutputCacheFix/blob/master/ParameterizedOutputCacheAttribute.cs

+0

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए! एक्सेलेंट फिक्स – Lelis718

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