Khanh Hoang - Kenn
Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.
- Trước hết , bạn hiểu như thế nào là caching : Web caching là việc lưu trữ bản sao của những tài liệu web sao cho gần với người dùng, cả về mặt chức năng trong web client hoặc những web caching servers riêng biệt
- Ưu điểm :
Không sử dụng caching :
- Nếu trong 1 thời gian ngắn có 2 lượt truy cập, thì các thực thi trên không đáng để quan tâm. Nhưng nếu khoảng 500 lượt truy cập trong 1 giờ chẳng hạng thì nó vấn đề mà chúng ta cần phải quan tâm. Liệu Server của bạn có thể đảm đương 500 x (các thực thi trên) không và có thể lượt truy cập còn hơn thế nữa
-Ở đây mình xin nói thêm “làm sao thống kê được lượt truy cập” . Các bạn có thể tìm hiểu ứng dụng miễn phí google analytics của google
Sử dụng caching :
Để làm giảm tải các truy vấn tới CSDL ta có thể sử dụng kĩ thuật Caching website.
Ví dụ :
Trong 1 ngày đó , tôi là người truy cập đầu tiên vào website : http://qhonline.info/news
Thì webserver sẽ thực thi các bước như sau :
Sau đó lưu nội dung hiển thị http://qhonline.info/news vào 1 file text đã được mã hóa trên webserver
Kế tiếp sau tôi là các user cũng truy cập đại chỉ : http://qhonline.info/news nhưng lần này hệ thống không truy vấn vào CSDL như các bước trên , mà nó sẽ tìm file đã được cache và đọc nó, và như thế 100 người hay 1000 người … truy cập vào http://qhonline.info/news thì cũcng chỉ đọc nội dung file cached
- Việc đọc nội dung 1 file text với việc truy vấn vào CSDL thì rõ ràng có sự khác biệt rất lớn về cách xử lý cũng như tốc độ load.
Bạn có thể xem hình mô tả bên dưới
- Ví dụ : tôi truy cập vào link sau : http://qhonline.info/news/bongba
Như vậy trong ứng dụng của tôi cần có
Controller : news và function bongda của Controller news
<?php class News extends Controller { function __construct(){ parent::controller(); //code here …………. } function bongda(){ //kết nối CSDL //…………… //loadview(); } }
- Làm sao để caching website với nội dung http://qhonline.info/news/bongba
- Bạn thêm hàm :
$this->output->cache($n)
dưới cùng của function bongda() với n là thời gian làm mới nội dung cache được tính bằng phút
Xem có thể xem thêm userguide về hàm này tại : http://codeigniter.com/user_guide/general/caching.html
Như vậy class có caching của chúng ta bây giờ là :
<?php class News extends Controller { function __construct(){ parent::controller(); //code here …………. } function bongda(){ //kết nối CSDL //…………… //loadview(); $this->output->cache(5) ; // thời gian làm mới là sao 5 phút nếu có lượt truy cập vào nội dung này } }
Nếu bạn muốn caching toàn bộ cho controller news thì thêm đoạn code $this->output->cache() vào cuối của hàm :
function __construct(){..} <?php class News extends Controller { function __construct(){ parent::controller(); //code here …………. $this->output->cache(5) ; // thời gian làm mới là sao 5 phút nếu có lượt truy cập vào nội dung này } function bongda(){ //kết nối CSDL //…………… //loadview(); } }
Các file cache được lưu trong thư mục system/cache của CodeIgniter