Bộ nhớ cache giúp tối ưu hóa hiệu năng cho trang web khi không phải kết nối nhiều vào cơ sở dữ liệu có sẵn mà thay vào đó sẽ lấy dữ liệu đã được lưu tĩnh (đã được lấy từ cơ sở dữ liệu trước đó).
Nếu bạn các CMS thông dụng như WordPress, Joomla,… thì có rất nhiều lựa chọn để bạn có thể cài đặt cache cho trang web từ kho plugin, component do cộng đồng các nhà phát triển chia sẻ từ miễn phí với chức năng cơ bản đến có phí với những chức năng cao cấp.
Nếu vì một lý do nào đó hoặc sử dụng 1 CMS tự phát triển thì bạn cũng có thể dễ dàng xây dựng tính năng bộ nhớ cache cho trang web theo hướng dẫn sau.
Đầu tiên bạn tạo 1 tập tin php đặt tên top-cache.php.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php $url = $_SERVER["SCRIPT_NAME"]; $break = Explode('/', $url); $file = $break[count($break) - 1]; $cachefile = 'cached-'.substr_replace($file ,"",-4).'.html'; $cachetime = 18000; if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n"; include($cachefile); exit; } ob_start(); ?> |
Trong đó:
- $cachefile: Tên của tập tin html chưa cache. Ví dụ ở đây nếu bạn truy cập vào trang index.php thì tập tin cache sẽ có dạng cached-index.html. Ở đây bạn cũng có thể thêm tên thư mục lưu trữ các tập tin cache ở trước để quản lý các tập tin cache cho dễ.
- $cachetime: Thời gian lưu trữ cache. Đơn vị tính bằng giây
Giải thích là ở đây đoạn mã này sẽ kiểm tra nếu trong cache có tồn tại và đối chiếu thời gian tồn tại có phù hợp trong khoảng cách cho phép thì nó sẽ lấy nội dung tập tin đó để trả về chứ không thực thi các hàm phía dưới.
Tiếp theo bạn tạo thêm 1 tập tin đặt tên là bottom-cache.php.
1 2 3 4 5 6 | <?php $cached = fopen($cachefile, 'w'); fwrite($cached, ob_get_contents()); fclose($cached); ob_end_flush(); ?> |
Đây là đoạn mã giúp lưu lại nội dung đã tải từ cơ sở dữ liệu cho trường hợp không tồn tại cache. Tức là được hiểu đây là hàm tạo tập tin cache.
Và để sử dụng thì bạn chỉ cần đặt (include) 2 tập tin này ở trên (top) và dưới (bottom) của trang thực thi là sẽ có tác dụng.
Ví dụ:
1 2 3 4 5 | <?php include('top-cache.php'); echo "wWw.MangBinhDinh.Vn"; include('bottom-cache.php'); ?> |
Chú ý là bạn hãy xét quyền cho phép ghi (cmod 777) cho thư mục chứa các tập tin cache.
Chúc các bạn thành công.
Huỳnh Mai Anh Kiệt