Bagaimana saya bisa menggunakan Cache Joomla dengan tampilan komponen saya?

12

Seperti halnya dengan CMS, hit terbanyak terjadi saat masih "baru". Saya ingin membuat cache hasil halaman pertama kali itu diberikan untuk jangka waktu tertentu untuk mengurangi beban kerja berat yang diperlukan untuk menghasilkannya.

Saya telah bekerja dari dokumentasi JCache , dan memiliki mekanika dasar bekerja seperti yang ditunjukkan di sini:

$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"

Saya terjebak mencoba menentukan di mana saya harus membuat cache, lalu "sweet spot" untuk menggunakan cache itu sebelum semua pekerjaan dimulai lagi.

PDB
sumber

Jawaban:

8

Sejauh ini pencarian Google membuat saya berasumsi bahwa joomla melakukan cache komponen Anda secara otomatis jika Anda menambah display(true,...)metode tampilan pengontrol Anda seperti dalam contoh berikut.
Contoh ini juga mencakup beberapa kode pengukuran untuk memeriksa apakah berfungsi (bagian JProfiler).

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
}
  • Anda harus secara manual mengatur$urlparams yang menentukan tampilan komponen mana yang membutuhkan cache yang berbeda ( urlparams = cache_id untuk berbicara). Dan Joomla sudah menangani parameter umum seperti format, opsi, tampilan, tata letak, tpl, bahasa id.

  • Perlu diketahui juga bahwa tidak ada pembaruan yang akan dilakukan dalam komponen Anda. Jika Anda memiliki hit counter dalam model Anda, jumlah hit akan tetap konstan ketika tampilan cache ditampilkan.

* Info tambahan: Di controller joomla library, ini adalah baris berikut yang memanggil cache view dan pada saat yang sama mengatur cache jika belum:
$cache->get($view, 'display'); //689: legacy controller

( EDIT 2015-01-14: Menambahkan urlparams)
( EDIT 2015-01-15: Menambahkan info tambahan kode)

e-motiv
sumber
but I can't find any core joomla code where the cache is being set.Hanya sebuah catatan - ini adalah $cache->getmetode di dalam
Dmitry Rekun
Wow! Itu coding yang sangat pintar. Terimakasih atas infonya. Saya akan memperbarui jawabannya.
motivasi elektronik
Hanya untuk memastikan jawabannya adalah penuh, di sini adalah
Dmitry Rekun