আমি কীভাবে আমার উপাদান দর্শন সহ জুমলার ক্যাশে ব্যবহার করতে পারি?


13

সাধারণত কোনও সিএমএসের ক্ষেত্রে, এখনও "নতুন" থাকা অবস্থায় সবচেয়ে বেশি হিট হয়। পৃষ্ঠার আউটপুটটি প্রথমবারের জন্য নির্দিষ্ট সময়ের জন্য রেন্ডার করার সময় ক্যাশে করতে চাই যাতে এটি তৈরি করতে প্রয়োজনীয় ভারী ভার চাপ কমান।

আমি জেচে ডকুমেন্টেশন থেকে কাজ করছি , এবং এখানে দেখানো মত মৌলিক যান্ত্রিকগুলি কাজ করেছে:

$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

এখন পর্যন্ত গুগল-অনুসন্ধানগুলি আমাকে অনুমান করে যে জুমলা আপনার উপাদানটিকে স্বয়ংক্রিয়ভাবে ক্যাশে করে যদি আপনিdisplay(true,...) নীচের উদাহরণ হিসাবে আপনার নিয়ামকের প্রদর্শন পদ্ধতিতে যুক্ত করেন।
উদাহরণস্বরূপ এটি কাজ করছে কিনা তা যাচাই করার জন্য কিছু পরিমাপের কোডও অন্তর্ভুক্ত রয়েছে (জেপ্রোফিলার অংশ)।

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 তাই কথা বলতে)। এবং জুমলা ইতিমধ্যে ফর্ম্যাট, বিকল্প, ভিউ, লেআউট, টিপিএল, ভাষা এন আইডির মতো সাধারণ পরামিতিগুলির যত্ন করে।

  • আপনার উপাদানটিতে কোনও আপডেট করা হবে না সে সম্পর্কেও সচেতন হন । আপনার মডেলটিতে যদি হিট কাউন্টার থাকে তবে ক্যাশে দর্শন দেখানো হলে হিটগুলির সংখ্যা স্থির থাকবে

* অতিরিক্ত তথ্য: জুমলা লাইব্রেরির নিয়ামকটিতে এটি নীচের লাইনটি যা ভিউ ক্যাশে বলে ডাকে এবং একই সাথে ক্যাশেটি সেট করে যদি এটি এখনও না হয়:
$cache->get($view, 'display'); //689: legacy controller

( 2015-01-14 সম্পাদনা করুন : urlparams যুক্ত)
( সম্পাদনা 2015-01-15: কোড অতিরিক্ত তথ্য যুক্ত করা হয়েছে)


but I can't find any core joomla code where the cache is being set.কেবল একটি নোট - এটি $cache->getপদ্ধতিটির অভ্যন্তরে রয়েছে
দিমিত্রি রেকুন

কি দারুন! এটা খুব চতুর কোডিং। তথ্যের জন্য ধন্যবাদ। আমি উত্তর আপডেট করব।
ই-মোটিভ

উত্তরটি পূর্ণ কিনা তা নিশ্চিত হওয়ার জন্য, এটি এখানে রয়েছে
দিমিত্রি রেকুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.