2013-07-14 6 views
5

साइटकोर 7 के साथ, मेरे अधिकांश क्वेरी स्ट्रिंग कस्टम मार्ग बन गए हैं। उदाहरण के लिए:एमवीसी रेंडरिंग के लिए यूआरएल द्वारा वेरी कैश?

OLD: /calendar?year=2013&month=7&day=14 
NEW: /calendar/2013/7/14 

नतीजतन, मैं अपने आप को URL के आधार पर मेरी प्रतिपादन के एचटीएमएल कैश अलग, बल्कि क्वेरी स्ट्रिंग द्वारा की तुलना में की जरूरत होती हैं। क्या साइटकोर एमवीसी रेंडरिंग के लिए यूआरएल द्वारा अलग-अलग कैश का सुविधाजनक तरीका प्रदान करता है?

अद्यतन

मैं ने पाया है कि सभी MVC प्रतिपादन mvc.renderRendering पाइप लाइन, जहां उनके कैश कुंजी निम्नलिखित कक्षा में उत्पन्न होता है के माध्यम से पारित:

Sitecore.Mvc.Pipelines.Response.RenderRendering.GenerateCacheKey

अधिभावी तक इस वर्ग की GenerateKey(Rendering rendering, RenderRenderingArgs args) विधि, मैं site.Request.FilePath का उपयोग करके कच्चे यूआरएल को सफलतापूर्वक जोड़ सकता हूं। अब जिस समस्या का सामना करना पड़ रहा है वह है कि मैं इस कैश सेटिंग को प्रतिपादन से कैसे निकालूं? मुझे लगता है कि मुझे प्रतिपादन पर एक नया "VaryByUrl" कैशिंग विकल्प बनाना होगा, लेकिन मुझे पूरा यकीन नहीं है।

अद्यतन 2

मैं निम्नलिखित कोड का उपयोग कर प्रतिपादन परिभाषा आइटम के बंद एक कस्टम फ़ील्ड को पढ़ने में सक्षम था। यह काम करता है, लेकिन यह केवल परिभाषा मद (नहीं प्रस्तुति विवरण में प्रतिपादन की वास्तविक उदाहरण)

protected override string GenerateKey(Rendering rendering, RenderRenderingArgs args) 
{ 
    var key = base.GenerateKey(rendering, args); 

    if (rendering.RenderingItem.InnerItem.Fields["VaryByUrl"] != null) 
    { 
     var varyByUrl = ((CheckboxField)rendering.RenderingItem.InnerItem.Fields["VaryByUrl"]).Checked; 
     if (varyByUrl) key += GetUrlPart(rendering); 
    } 

    return key; 
} 

उत्तर

1

हम भी VaryByUrl के लिए, लेकिन एक WebForms वास्तुकला में एक की जरूरत थी (v.6.5.0) पर लग रहा है ।

sublayout परिभाषा के लिए, मैंने उपरोक्त कक्षा को ओवरराइड किया ताकि VaryByUrl को ऊपर से पूरा किया जा सके।

प्रतिपादन के उदाहरण के लिए, आपके साइटकोर संस्करण को अभी भी वही रेंडरिंग पैरामीटर टेम्पलेट का उपयोग करना है, आपको/साइटकोर/टेम्पलेट्स/सिस्टम/लेआउट/रेंडरिंग पैरामीटर के स्रोत फ़ील्ड में संदर्भित कक्षा का अपना संस्करण बनाना होगा/मानक रेंडरिंग पैरामीटर/कैशिंग/कैशिंग।

इस स्रोत क्षेत्र में वर्ग संदर्भ है: प्रकार = Sitecore.Shell.Applications.Layouts.DeviceEditor.CachingField, Sitecore.Client

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