/ / Codeigniter / Comment (1)

Caching website trong codeigniter framework

Với 1 website thì vấn để cache dữ liệu vô cùng quan trọng và cần thiết.Trong bài hôm nay mình sẽ giới thiệu cho các bạn  cách Caching website trong codeigniter framework.Nôi dung bài viết này bao gồm:

  1. Caching website là gì và tại sao cần sử dụng nó
  2. Caching trong CodeIgniter

Caching website website là gì?

– Để hiển thị được những dữ liệu trong cơ sở dữ liệu (CSDL) thì công việc của chúng ta cần đó là truy xuất CSDL và công việc này sẽ tốn thời gian nhất định nào đó tùy thuộc vào số lượng dữ liệu cũng như câu lệnh truy vấn của bạn.Và bạn thử hình dung website của bạn có tơi hàng nghìn lượt truy cập cũng đồng nghĩa với việc chúng ta cần truy xuất CSDL và gửi yêu cầu lên server xử lý hàng nghìn lần.Ở đây đặt ra nhu cầu sao lưu dữ liệu để hiển thị tránh tính trạng server quá tải và truy xuất nhiều vào CSDL
– Caching website 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 của web caching

  1. Giảm tải băng thông
  2. Hạn chế việc truy vấn trực tiếp vào Databse
  3. Load nội dung nhanh hơn
  4. Giảm gánh nặng cho server một số yếu cầu do server xử lý.
caching website

caching website

Caching website trong codeigniter framework

– Trong codeIgniter cung cấp cho chúng ta những giải pháp cache rất đơn giản và hiểu quả,trong phần này mình hường dẫn các bạn kiểu cache file,có nghĩa sẽ hệ thống sẽ sinh ra file lưu trữ mã html của website đối với lần truy cập đầu tiên và nhưng lần truy cập sau hệ thống sẽ load trực tiếp file này.
– Để sử dụng cache nội dung chúng ta sử dụng hàm sau:

$this->output->cache($n)

Trong đó thì $n là thời gian cache tính bằng phút,có nghĩa cứ $n phút thì file cache này sẽ được làm mới.
Ví dụ:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Product extends CI_Controller {
	// Bien luu thong tin gui den view
	var $data = array();

	/**
	 * Ham khoi dong
	 */
	function __construct()
	{
		//kế thừa từ CI_Controller
		parent::__construct();
	}

	/**
	 * Trang lay danh sach
	 */
	function index()
	{
             $this->load->view('index');
             $this->output->cache(20) ;
	}

	/**
	 * Trang xem chi tiet
	 */
	function view()
	{
	   $this->load->view('view');
	}
}

Với controller mình đang thực hiện cache trang index với thời gian là 20 phút.Lúc này các bạn có thể mở thư mục application/cache sẽ thấy 1 file được tạo ra,tên file này đã được mã hóa và nội dung bên trong chính là toàn bộ mã html của website được lưu trữ.Như vậy từ những lần truy cập sau trong vòng 20 phút thì dữ liệu sẽ được load từ chính file này.Các bạn có thể test bằng cách tắt MySql đi và truy cập web thì thấy dữ liệu vẫn cứ hiển thị bình thường.Trong trường hợp các bạn muốn cache cả controller này thì chỉ cần chuyển dòng code vào trong hàm khởi tạo

        /**
	 * Ham khoi dong
	 */
	function __construct()
	{
	     //kế thừa từ CI_Controller
	     parent::__construct();
             $this->output->cache(20) ;
	}

Chú ý: khi các bạn chạy trên host thì cầnchmod thư mục application/cache thành 0777 nhé
Kết thúc: Qua bài này mình đã giới thiệu cho các bạn cái nhìn tổng quan về vấn đề caching dữ liệu trong website và cách sử dụng Caching trong codeigniter framework,sang bài sau mình sẽ tiếp tục hướng dẫn các bạn sử dụng Caching Driver trong codeIgniter.

Bài viết có sử dụng 1 số khái niệm tại wikipedia.



22/05/2015
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

One comment

  1. nick says:
     /  Reply

    Cảm ơn bài viết của bạn. CI có hỗ trợ thư viện nào để cài đặt memcache hay redis ko nhỉ? nếu cache file như thế này thì vẫn chưa đc tối ưu lắm.

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL