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

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: การเก็บข้อมูลชั่วคราว(Cache) ใน Joomla

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

โดย bankjittapol » 27/11/2019 5:54 pm

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

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

โค้ด: เลือกทั้งหมด

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

โค้ด: เลือกทั้งหมด

<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 2029 times
เมื่อมีการดึงข้อมูล cache จะถูกเก็บไว้ใน folder cache ใน folder Joomla
Joomla Developing Knowledge-1.png
Joomla Developing Knowledge-1.png (34.61 KiB) Viewed 2029 times
ภายในไฟล์จะเป็นข้อมูลที่ทำการ ดึงข้อมูลมาเก็บไว้
Joomla Developing Knowledge-1.png
Joomla Developing Knowledge-1.png (119.9 KiB) Viewed 2029 times

ข้างบน