การเก็บข้อมูลชั่วคราว(Cache) ใน Joomla

แชร์ ความรู้ในการ พัฒนา Joomla Component Extension Module Plugin

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
bankjittapol
PHP Super Member
PHP Super Member
Posts: 344
Joined: 21/10/2019 10:19 am

การเก็บข้อมูลชั่วคราว(Cache) ใน Joomla

Post by bankjittapol »

การเก็บข้อมูลชั่วคราว(Cache) ใน Joomla
Cache หรือ ข้อมูลชั่วคราว คือ การที่เราทำการดึงข้อมูลออกมาแสดง หรือประมวลผล ซึ่งถ้าข้อมูลนั้นมีจำนวน จะส่งผลให้การดึงข้อมูลนั้นใช้เวลานาน และยิ่งข้อมูลนั้นๆ ถูกจำกัดจำนวนที่เรียกใช้แล้ว การจะดึงข้อมูลเดิมมาใช้ซ้ำบ่อย ๆ จึงต้องมีการเก็บข้อมูลชั่วคราว (cache) ซึ่งจะเก็บข้อมูลที่มีการดึงข้อมูลมาเก็บไว้ชั่วคราวตามเวลาที่กำหนด เพื่อที่จะไม่ต้องไปดึงข้อมูลใหม่ แต่จะเป็นการเรียกใช้ cache แทน ซึ่งจะทำให้การประมวลผลมาความรวดเร็วยิ่งขึ้น โดยวันนี้จะมานำเสนอในส่วนของการเก็บ cache ใน module พยากรณ์อากาศ ซึ่ง module ตัวนี้คือการดึงข้อมูลจาก api ของเว็บไซต์ กรมอุตุนิยมวิทยา ซึ่งต้องมีการเก็บข้อมูลชั่วคราว (cache) เพื่อที่จะไม่ให้มีการไปดึงข้อมูลการเว็บ กรมอุตุ ทุกครั้งที่มีการรีเฟรชหน้าจอ ซึ่งการดึงข้อมูลนั้นเป็นสิ่งที่ช้ามากเพราะชนิดข้อมูลมีถึง 77 จังหวัด ซึ่งการเก็บข้อมูลชั่วคราวช่วยได้มากเลยทีเดียว โดยขั้นตอนการ เขียนคำสั่ง เก็บข้อมูลชั่วคราว (cache) มีดังนี้

คำสั่งที่ใช้ หน้า php

Code: Select all

require_once __DIR__ . '/helper.php';

$helper = new ModWeatherForcecastHelper();
$cache = \Joomla\CMS\Factory::getCache('mod_mweather_forcecast',''); // เรียกใช้ Cache function
cache->setCaching($params->get('cache',1));  //เปิด ปิดการทำงาน
$cache->setLifeTime($params->get('cache_time',900));  //set เวลา default 900

$product = $cache->get($cache->makeId());
if (!$product) {
  $product = $helper->getItems();
  $cache->store($product ,$cache->makeId());
}

require(JModuleHelper::getLayoutPath('mod_mweather_forcecast','default'));
จาก คำสั่งคือการเรียกใช้ ฟังก์ชัน getCache() แล้วทำการเปิดปิดโดยการรับค่าจากที่ผุ้ดูแลระบบเลือก จาก cache โดยกำหนดค่า เริ่มต้น เป็น เปิด ซึ่งก็คือ 1
จากนั้นกำหนดระยะเวลาที่ทำการเก็บข้อมูลชั่วคราว จากนั้นทำการดึงข้อมูล จาก cache เก็บไว้ในตัวแปร $product ซึ่งมีการตรวจสอบว่า ถ้า $product เป็นค่าว่างให้ทำการดึงค่าจาก ฟังก์ชั่น getItem() ซึ่งเป็นฟังก์ชันการดึงข้อมูลจาก api จากนั้นนำไปเก็บไว้ใน cache


หน้า xml

Code: Select all

<fieldset name="advanced">
	<field
		name="cache"
		type="list"
		label="COM_MODULES_FIELD_CACHING_LABEL"
		description="COM_MODULES_FIELD_CACHING_DESC"
		default="1"
		filter="integer"
	>
		<option value="1">JGLOBAL_USE_GLOBAL</option>
		<option value="0">COM_MODULES_FIELD_VALUE_NOCACHING</option>
	</field>

	<field
		name="cache_time"
		type="number"
		label="COM_MODULES_FIELD_CACHE_TIME_LABEL"
		description="COM_MODULES_FIELD_CACHE_TIME_DESC"
		default="900"
		filter="integer"
	/>
	</fieldset>											
			
ส่วนของการตั้งค่า ซึ่งจะเป็นการตั้งค่า เปิด ปิด การใช้ การเก็บข้อมูลชั่วคราว ซึ่งจะมีสองค่า 0 คือปืด 1 คือเปิด และเวลาที่ใช้ในการเก็บข้อมูลชั่วคราว ซึ่งตั้งค่าเริ่มต้นคือ 900

หน้าตั้งค่า แสดงผลในส่วนของ แท็บ advance
Joomla Developing Knowledge-1.png
Joomla Developing Knowledge-1.png (5.72 KiB) Viewed 286 times
เมื่อมีการดึงข้อมูล cache จะถูกเก็บไว้ใน folder cache ใน folder Joomla
Joomla Developing Knowledge-1.png
Joomla Developing Knowledge-1.png (34.61 KiB) Viewed 286 times
ภายในไฟล์จะเป็นข้อมูลที่ทำการ ดึงข้อมูลมาเก็บไว้
Joomla Developing Knowledge-1.png
Joomla Developing Knowledge-1.png (119.9 KiB) Viewed 286 times

  • Similar Topics
    Replies
    Views
    Last post

Return to “Joomla Developing Knowledge”

Who is online

Users browsing this forum: No registered users and 2 guests