logo
Hỗ trợ: 24/7
Điện thoại: 098 984 8886
Email: info@thuonghieuweb.com

Tăng tốc độ cho website bằng cơ chế cache của PHP

2/5 526 votes
updated on 2020-08-04

Cơ chế cache là gì?



Cache là một cơ chế nhằm tăng tốc độ xử lý, tải trang web để mang lại những trải nghiệm tốt cho người dùng và hiệu quả cho việc SEO website. Để hiểu rõ cơ chế này chúng ta cần phân tích quá trình người dùng đọc trang web như sau:

Bước 1: Người dùng gõ một trang web vào URL, browser sẽ gửi đường link đến máy chủ để xử lý.

Bước 2: Máy chủ nhận được yêu cầu sẽ xử lý các phần việc khác nhau, bao gồm cả việc đọc dữ liệu từ database, tính toán và khi có kết quả thì trả về một trang HTML gửi ngược lại cho browser ở máy tính của người dùng. Đây là giai đoạn tốn nhiều thời gian nhất trong toàn bộ quá trình.

Bước 3: Browser sẽ căn cứ vào trang HTML nhận được để hiển thị nội dung cho người dùng.

Cơ chế cache sẽ lưu lại kết quả của máy chủ có đươc ở bước 2 vào một bộ nhớ đệm (buffering) và tái sử dụng lại mỗi khi người dùng cần lại những nội dung này.

Các hàm caching của PHP


PHP sử dụng các hàm sau đây để lưu cache và tái sử dụng chúng

ob_start
ob_get_contents
ob_end_clean
ob_end_flush

Trong đó hàm ob_start sẽ khởi động quá trình bắt đầu ghi cache. Những gì mà máy chủ tính toán xử lý sau hàm này và xuất kết quả ra sẽ được lưu vào bộ nhớ đệm

Hàm ob_get_content sẽ lấy kết quả trong bộ nhớ đệm để tái sử dụng. Có 2 cách tái sử dụng kết quả này chúng ta sẽ bàn phần sau

Hàm ob_end_clean sẽ xóa bộ nhớ đệm, giải phóng bộ nhớ đệm và ngừng việc lưu cache. Chúng ta cần đảm bảo phải có hàm này sau khi xử lý cache để giải phóng bộ nhớ đệm cho tác vụ khác và để máy chủ không bận rộn với việc lưu cache.

Hàm ob_end_flush cũng tương tự như ob_end_clean nhưng trước khi giải phóng bộ nhớ đệm, nó sẽ gửi kết quả đến cho browser một lần nữa.


Cách sử dụng lại các kết quả đã được cache


Cách 1: Sử dụng biến


Nếu như kết quả ra không quá lớn chúng ta có thể lưu vào biến và tái sử dụng lại nhiều lần. Hãy làm theo ví dụ sau

    ob_start();
    $x=1+1;
        echo $x;
        $content = ob_get_contents();
    ob_end_clean();
    echo $content;

Trong ví dụ trên, máy chủ sẽ phải tính toán xem 1+1 bằng mấy, rồi ghi kết quả đầu ra bởi lệnh echo. Kết quả này được lưu vào bộ nhớ đệm và gán cho biến $content. Về sau mỗi khi cần dùng lại kết quả chúng ta sẽ chỉ cần echo $content.


Cách 2: Sử dụng file


Nếu như kết quả đầu ra khá lớn, chẳng hạn là cả một trang web HTML thì chúng ta nên ghi kết quả đó vào file để dùng lại mà không làm tốn bộ nhớ của máy chủ. Ví dụ sau đây sẽ kiểm tra file cache có tồn tại hay không và thời gian update mới nhất của file nằm trong khoảng 600 mili giây thì sẽ lấy nội dung file này gửi về cho browser mà không cần phải tính toán gì thêm. Ngược lại nếu file không tồn tại hoặc đã update quá lâu, hơn 600 mini giây thì máy chủ sẽ tính toán lại trả về kết quả đồng thời ghi vào file.html để sử dụng lại lần sau.

$cacheFile = "cache/file.html";
$time_update_cache = 600;
if ( (file_exists($cacheFile)) && (time() <= (fileatime($cacheFile) + $time_update_cache) ))
{
     $content = file_get_contents($cacheFile);
     echo $content;
}
else   
{
    ob_start();
        echo "Đây là nội dung sẽ được cache trong 600 miliseconds";
    $x=1+1;
    echo $x;
        $content = ob_get_contents();
    ob_end_clean();
    file_put_contents($cacheFile,$content);
    echo $content;
}

Lưu ý khi sử dụng file phải để ý đến đường dẫn và thuộc tính đọc ghi của file, các hàm sau đây giúp chúng ta xác định vị trí thư mục hiện thời và có thể thay đổi thuộc tính đọc ghi của file
   getcwd() - hàm lấy đường dẫn hiện thời
   chmod($filename,0755) - hàm thay đổi thuộc tính đọc ghi của file


Lưu cache từng phần


Chúng ta đều biết rằng, trong một trang web sẽ có các thành phần cố định và các thành phần biến đổi, vì thế để tối ưu hóa một website chúng ta cần xác định các thành phần cố định lưu vào cache và sử dụng lại còn các thành phần biến đổi, động thì ko nên dùng dữ liệu cache vì người dùng sẽ thấy bị đọc lại dữ liệu cũ.
 

   
 
Có thể bạn muốn xem thêm....

    Những điều cần biết khi xây dựng website

    Xây dựng một website không đơn giản chỉ là một gian hàng hay một tờ rơi. Bạn cần phải làm mọi cách để website của mình hướng tới khách hàng, và quan trọng hơn cả, là làm sao để nội dung của bạn có sức lan tỏa nhanh chóng trong môi trường mạng từ đó lôi kéo khách hàng đến với website của bạn

    Xem chi tiết

    Những điều cần biết về dịch vụ email với tên miền riêng

    Email tên miền riêng là email gắn với tên miền của doanh nghiệp kiểu như tennhanvien@tencongty.com. Email tên miền riêng sẽ tạo sự chuyên nghiệp và tin cậy khi giao dịch, đồng thời có thể cấp phát cho nhân viên khi mới đi làm, thu hồi lại khi nhân viên đó thôi việc và lưu trữ được mọi giao dịch trên email mà không sợ nhân viên đổi mật khẩu, mang theo hòm thư khi rời công ty...

    Xem chi tiết
    Đội ngũ lập trình viên, kỹ thuật viên và seo-er của Thương Hiệu Web cam kết

    Hỗ trợ 24/7

    Hỗ trợ khách hàng 24 giờ 1 ngày, 7 ngày 1 tuần qua điện thoại, email và chat online

    Hoàn tiền 100%

    Trong thời gian 45 ngày sử dụng dịch vụ, nếu quý khách không hài lòng!

    Cam kết uptime 99.99%

    Nếu dịch vụ của quý khách bị gián đoạn, chúng tôi sẽ cộng thêm 1 tháng sử dụng

    KHÁCH HÀNG NÓI VỀ CHÚNG TÔI

    Một đơn vị xây dựng web tận tâm và chuyên nghiệp!

    "Thương Hiệu Web là đơn vị thiết kế website có năng lực, tôn trọng và có trách nhiệm với khách hàng, đặt mình vào vị trí khách hàng để mang lại cho khách hàng nhiều giá trị từ chính dịch vụ của mình. Với tôi, Thương Hiệu Web là một lựa chọn hợp lý!" Chị Nguyễn Phượng, TP kinh doanh, Công Ty Cổ Phần Quản Lý Công Trình Đô Thị Hải Dương.

    Xem bình luận trên FB
    Sitemap Điều khoản sử dụng Chính sách riêng tư
    Bản quyền thuộc về công ty cổ phần truyền thông số VDATA
    Tầng 2, tòa nhà 71 Hoàng Cầu, Đống Đa, Hà Nội
    Điện thoại: (04) 3990 9643 - Email: info@vdata.com.vn
    Giấy chứng nhận ĐKKD số: 0102766780, do Sở KHĐT Tp Hà Nội cấp ngày 28/04/2009

    Online