Hướng dẫn học : Kĩ thuật Caching tăng tốc website trong CakePHP

Hướng dẫn học : Kĩ thuật Caching tăng tốc website trong CakePHP

Trước khi đọc bài này , nếu chưa rõ về thuật ngữ Caching các bạn có thể tìm hiểu trên google với từ khóa "Caching là gì" hoặc xem bài viết này để hiểu rõ hơn về thuật ngữ , xem tại đây

Trong CakePHP ta chỉ cần cấu hình và sử dụng, gồm các bước sau :

1. Vào app/config/core.php tìm

//Configure::write('Cache.check', true); 

và thay thế bằng

Configure::write('Cache.check', true); 

2. Sử dụng Caching trong 1 Controller :

Trong Controller ta khai báo biến

var $helpers = array("Cache"); 

Để Caching 1 action trong 1 Controlller ta khai báo :

var $cacheAction = array(
         'tên action'  => array('callbacks' => true, 'duration' => "thời gian cache"),
    ); 

3. Đánh dấu những phần không cần phải Cache :

Phần trình bày trên là ta Cache toàn bộ trang , sau một thời gian nhất định dữ liệu mới được cập nhật mới, nhưng đôi khi có những “khu vực nhất định” trong website chúng ta “không cần phải Cache khu vực đó″ và muốn nó luôn được cập nhật ta là như sau .

Trong file view của action trong Controller được Cache ta đánh dấu phần không cần phải Cache bằng đoạn mã

<cake:nocache>
<?php echo "This here didn't cache !" ?> // Phần không được cache
</cake:nocache>

Ví dụ một đoạn code xử lý đăng nhập trong file view không được Cache

<cake:nocache>
<?php if ($session->check('User.name')) : ?>
    Welcome, <?php echo $session->read('User.name')?>.
<?php else: ?>
    <?php echo $html->link('Login', 'users/login')?>
<?php endif; ?>
</cake:nocache>

Như ta thấy nếu đoạn code trên nếu được Cache thì khi đăng nhập thành công thì vẫn hiển thị link đăng nhập.

4. Xóa Caching :

Khi trường hợp Insert , Update hay Delete mà bạn muốn dữ liệu mới được cập nhật ngay ta dùng hàm :

Cache::clear() 

5.Ứng dụng :

Tôi có 1 Controller Books với 2 action :
- index() : hiển thị danh sách trong table Books , action này được qui định Cache trong 1 phút (tính bằng mili giây)
- view() : không cần phải Cache

Trong Controller Book của tôi như sau :

class BooksController extends  AppController{
 
    var $name = "Books";// ten cua Controller Book
 
    var $helpers = array('Cache');
 
    var $cacheAction = array(
         'index'  => array('callbacks' => true, 'duration' => 3600),
    );
 
    //-- View all Book
    function index(){
        $data = $this->Book->find("all");
        $this->set("data",$data);
    }
 
    //-- View detail item
    function view($id=NULL){
            $info = $this->Book->read(null,$id);
            $this->set("data",$info);
            $this->render("detail_view");
    }
} 

6. Ứng dụng :

Trước khi cấu hình cho Cache Controller Books, ta vào thư mục app/tmp/cache/view/ thì sẽ không thấy file được Cache , vì nội dung chưa được Cache , xem hình bên dưới

Hướng dẫn học :  Kĩ thuật Caching tăng tốc website trong CakePHP

Sau khi cấu hình Cache cho Controller Books và truy cập lại đường dẫn http://localhost/cakephp/books

Sau đó ta vào thư mục app/tmp/cache/view/ thì sẽ thấy file được Cache

Bây giờ các bạn thử tắt Mysql của server (disable) đi để không truy cập được Cơ sở dữ liệu và reload lại trang ta vẫn thấy kết quả bình thường cho đến khi hết 3600(thời gian được qui định trong đoạn mã trong Controller Book của ví dụ) giây kể từ lúc file cakephp_books.php được Cache .

Tham khảo tại : http://book.cakephp.org/view/1376/Cache

Tags: 
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
SPAM trong eCommerce

Cách xác nhận email của bạn không SPAM trong eCommerce

In the world of eCommerce having the ability to communicate with customers and potential customers is priceless.

Chính phủ Mỹ "sờ gáy" Facebook vì vấn đề bảo mật

Chính phủ Mỹ sờ gáy Facebook vì vấn đề bảo mật

Facebook đang phải tiến hành những cuộc đàm phán với chính phủ Mỹ về việc sử dụng thông tin cá nhân người dùng trên mạng xã nội này. Theo thông tin nội bộ, chính phủ yêu cầu Facebook phải nhận được sự đồng ý của người sử dụng trước khi hãng thay đổi những điều khoản quan trọng trong chính sách bảo mật. Điều đó có nghĩa việc người dùng cho phép chia sẻ thông tin của mình là một chuyện, việc Facebook sử dụng thông tin đó như thế nào lại là một chuyện khác.

Android 2.3 Gingerbread vượt lên dẫn đầu thị trường Android

Android 2.3 Gingerbread vượt lên dẫn đầu thị trường Android

Vào đầu tháng 10, thị phần của Android 2.3 Gingerbread chỉ chiếm khoảng 40% trong thị trường Android và xếp thứ hạng 2.

Công ty diệt chuột T&C

 

Diet con trung