मैं अपने घटकों के दृश्य के साथ जूमला के कैश का उपयोग कैसे कर सकता हूं?


13

जैसा कि आम तौर पर एक सीएमएस के साथ होता है, सबसे हिट तब होता है जबकि यह अभी भी "नया" है। मैं पृष्ठ उत्पादन को पहली बार कैश करना चाहता हूं, क्योंकि यह एक निश्चित अवधि के लिए प्रदान किया जाता है ताकि इसे उत्पन्न करने के लिए आवश्यक भारी कार्यभार को कम किया जा सके।

मैं JCache प्रलेखन से काम कर रहा हूं , और यहां दिखाए गए अनुसार बुनियादी यांत्रिकी काम किया है:

$cache = JFactory::getCache('MyCache', '');
$cache->setCaching(true);
$cache->setLifeTime(86400);  //24 hours
$cache_id = 'MyCache_page_123';
$cached_page= $cache->get($cache_id);
if (!empty($cached_page)) {
    $the_page_output = $cached_page;
}else{
    $the_page_output = ...<div>the generated view HTML</div>....
    $cache->store($the_page_output, $cache_id);
}
// echo or return "$the_page_output"

मैं यह निर्धारित करने की कोशिश कर रहा हूं कि मुझे कैश कहां बनाना चाहिए, फिर सभी काम करने से पहले उस कैश का उपयोग करने के लिए "मीठा स्थान" ।

जवाबों:


9

अब तक Google-खोजों ने मुझे अनुमान लगाया है कि यदिdisplay(true,...) उदाहरण के रूप में आप अपने नियंत्रक की प्रदर्शन विधि में जोड़ते हैं तो जूमला आपके घटक को स्वचालित रूप से कैश कर देता है
उदाहरण के लिए यह जाँचने के लिए कुछ माप कोड भी शामिल है कि यह काम कर रहा है (JProfiler part)।

public function display($cachable = false, $urlparams = array()) {
    $profiler = new JProfiler();//debug

    //Joomla cache only takes format, option, view, layout, tpl, language en id als default cache_id ($urlparams)
    $input  = new Jinput;
    $urlparams['comp_page_specific_id']=$input->getUInt('comp_specific_id');
    $urlparams['comp_page_specific_else']=$input->getUInt('comp_page_specific_else');

    parent::display(true, $urlparams);
    JFactory::getApplication()->enqueueMessage($profiler->mark( ' seconds with caching<br>Only works after someone has visited this page at least once.<br>Can be reset in backend.' ));//debug
}
  • आपको मैन्युअल रूप से यह निर्धारित करना होगा$urlparams कि कौन से घटक दृश्य को अलग कैश की आवश्यकता है ( urlparams = cache_id तो बोलने के लिए)। और जूमला पहले से ही सामान्य मापदंडों जैसे प्रारूप, विकल्प, दृश्य, लेआउट, tpl, भाषा en id का ख्याल रखता है।

  • यह भी ध्यान रखें कि आपके घटक में कोई अपडेट नहीं किया जाएगा। यदि आपके मॉडल में एक हिट काउंटर है, तो कैश्ड दृश्य दिखाए जाने पर हिट की संख्या स्थिर रहेगी

* अतिरिक्त जानकारी: जूमला लाइब्रेरी के कंट्रोलर में, यह निम्न पंक्ति है जो दृश्य कैश को कॉल करती है और उसी समय कैश सेट करता है यदि अभी तक नहीं किया गया है:
$cache->get($view, 'display'); //689: legacy controller

( EDIT 2015-01-14: जोड़ा गया urlparams)
( EDIT 2015-01-15: जोड़ा गया कोड अतिरिक्त जानकारी)


but I can't find any core joomla code where the cache is being set.बस एक नोट - यह $cache->getविधि के अंदर है
दिमित्री रेकुन

वाह! यह बहुत चालाक कोडिंग है। जानकारी के लिए धन्यवाद। मैं जवाब अपडेट कर दूंगा।
ई-प्रेरक

बस यह सुनिश्चित करने के लिए कि उत्तर पूर्ण है, यहाँ यह है
दिमित्री रेकून
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.