Tạo cache sử dụng PHPfastcache kết hợp với framework Kaisan

Việc tạo cache sẽ giúp website của bạn giảm tải rất lớn.

Đầu tiên bạn cần tích hợp phpfastcache vào framework Kaisan

Cài đặt PHPfastcache

Vào thư mục includes thêm file phpfastcache.php và thư mục phpfastcache

Mở file includes/Config.php thêm các thông số sau:


define('CACHED_TIME', 7200); // 120 phut
define('CACHED_TIME_LV0', 60); //1 phut	
define('CACHED_TIME_LV1', 600); //10 phut
define('CACHED_TIME_LV2', 1800); //30 phut
define('CACHED_TIME_LV3', 3600); //60 phut 
define('CACHED_TIME_LV4', 43200); //12 tieng
define('CACHED_TIME_LV5', 86400); // 1 ngay	

Tìm đến $config = array( và thêm “cache_phpfastcache” => 1, // 0 = Enable cache file json, 1 = enable Memcached – phpfastcache

Lưu lại file.

Mở file includes/Core.php thêm các thông số sau: tìm dòng /includes/Action.class.php và thêm lên trên dòng này.

// CACHE
include(ROOT.”/includes/phpfastcache.php”);
include(ROOT.”/includes/Action.class.php”);
Lưu file
Như vậy là xong phần cài đặt tích hợp vào framework Kaisan

Cách sử dụng cache

Tại file điều hướng route mở file includes/App.class.php

Bên dưới là code ví dụ về 1 phương thức sử dụng với chức năng hiển thị nội dung chi tiết 1 bài viết


	protected function post(){
		global $mysql;
		global $conne;			
		$url_post=$this->config['url'].'/'.$_GET["a"];	

		$id_post=Main::getPostID($this->do);
 
		if($this->config['cache_phpfastcache']==1){	 
			$phpFastCache = new phpFastCache();	
			$data = array();
			$data = $phpFastCache->get("post_cache_{$id_post}");
			 
			if (empty($data)) {
				echo '';
					$result=$mysql->execute($conne,"select * from news where id='$id_post'");
					  if($mysql->num_rows($result)<>0){
						  $data = $mysql->fetch_array($result);
						  $category_id=$data['category_id'];
						  $data['textCate']=Main::cot("id='$category_id'",'category','title'); 
					  }	 
				$phpFastCache->set("post_cache_{$id_post}",$data,CACHED_TIME_LV5);
			}else{
				echo '';
			}
		}else {
			$data = Main::cache_get("test_cache_{$id_post}"); 
			if($data == NULL){ 
				Main::cache_set("test_cache_{$id_post}", $data);
			}
		}		
		
		
		
		$image= $data['image']; 
		$thumb=$this->config['url_image'].'/resize_576x335/'.$image;
		Main::set("image",$thumb);	
		$image= $data['title'];  	
		Main::set("title", $title);			
		Main::set("url", $url_post);			
		$this->header();
		include(THEME."/post.php");
		$this->footer();
	}

Ngay từ đầu chúng ta tạo 1 biến $data kiểu dữ liệu mảng để chứa tất cả dữ liệu truy vân từ sql lưu vào biến $data, ta cũng có thể truy vấn 1 dữ liệu từ 1 bảng bất kỳ và add thêm vào biến $data như $data[‘textCate’]=Main::cot(“id=’$category_id'”,’category’,’title’);

Như vậy lúc này sử dụng dữ liệu toàn bộ sẽ được lấy từ biến $data để hiển thị và khi cache sẽ cache biến $data, khi chưa có dữ liệu sẽ truy vấn gọi lần 1 và lưu mảng dữ liệu vào biến $data, ở lần 2 thì kiểm tra $data đã có dữ liệu thì sẽ không truy vấn nữa và dùng $data có dữ liệu đã được cache đem ra sử dụng.

Đây là cách cache tốt nhất. Gom tất cả dữ liệu cần dùng đưa vào 1 biến $data và cache nó.