Thông thường, sự tương tác giữa người dùng và trang web sẽ là Người
dùng gửi Yêu Cầu -> Trang web nhận -> Lấy dự liệu từ database
-> Trả về cho người dùng.
Trong quá trình trang web lấy dữ liệu từ database, sẽ hao tốn tài
nguyên, thời gian. Trường hợp dữ liệu ít bị thay đổi ví dụ như menu của
trang web, thứ tự các module, v.v…Thì việc truy xuất vào database là
không cần thiết, gây lãng phí.
Bài này mình sẽ làm một ví dụ nhỏ về “cache” đồng thời so sánh thời
gian xử lý để thấy được lợi ích của việc ứng dụng cache khi lập trình
web.
Tạo một table tên là friends:
|
create table friend(name varchar(20));
|
Thêm một vài record cho table:
|
insert into friend value('Dung');
insert into friend value('Mai');
insert into friend value('Toan');
insert into friend value('Tuan');
insert into friend value('Lan');
|
Tạo một file friend.txt:
|
<ul><li>Dung</li><li>Mai</li><li>Toan</li><li>Tuan</li><li>Lan</li></ul>
|
Ở đây file friend.txt chính là cache của table friend.
Tạo file noncache.php
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$start= microtime(true);
$db = new PDO('mysql:dbname=test;host=localhost', "root", "123");
$myfriends = $db->query("select * from friend");
echo '<ul>';
foreach($myfriends as $friend){
echo '<li>'.$friend['name'].'</li>';
}
echo '</ul>';
usleep(20000);
$end = microtime(true);
$time=$end-$start;
echo "Thời gian load trang: $time giây.";
|
File cache.php
|
<?php
$start = microtime();
$myfriends = file_get_contents('myfriend.txt');
$start = microtime();
$end = microtime();
usleep(500);
$time=$end-$start;
echo "Thời gian load trang: $time giây.";
?>
|
Chạy 2 file và so sánh thời gian load trang, dễ dàng thấy thời gian
load của file cache.php ít hơn rất nhiều so với file noncache.php vì
không cần phải truy xuất và lấy data từ database.
Vậy khi lập trình back-end, chúng ta sẽ viết để mỗi khi thêm dữ liệu, cache sẽ được cập nhật lại.