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.
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ó.