- Tại sao cần phải caching website
- Sự khác biệt giữa caching và không caching
- Làm thế nào để caching trong CodeIgniter
1.Tại sao cần phải caching website:
- 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 :
- Load nội dung nhanh hơn
- Hạn chế việc truy vấn trực tiếp vào Databse
2.Sự khác biệt giữa caching và không caching
Không sử dụng caching :
• Kết nối MySQL Database
• Lấy 10 item trong database
• Sắp xếp nhửng Item theo thứ tự
• Đọc template file cho web sau đó cho việc hiển thị
• Trả kết quả về phía người dùng
- 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 :
• Kết nối MySQL Database
• Lấy 10 item trong database
• Sắp xếp nhửng Item theo thứ tự
• Đọc template file cho web sau đó cho việc hiển thị
• Trả kết quả về phía người dùng
Sau đó lưu nội dung hiển thị http://qhonline.info/newsvà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/newsnhư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/newsthì 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
3.Làm thế nào để caching trong CodeIgniter :
- 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ó
class News extends Controller {
function __construct(){
parent::controller();
//code here ………….
}
function bongda(){ //kết nối CSDL
//……………
//loadview();
}
}
- Bạn thêm hàm :
PHP Code:
$this->output->cache($n)
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 Code:
<?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 }
}
PHP Code:
function __construct(){..}
PHP Code:
<?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(); }
}