Bỏ qua tới nội dung
Kiến thức SEO· ·9 phút đọc

Server cache là gì (3 lớp đệm phía máy chủ)

Nguyen Hien
Server cache là gì (3 lớp đệm phía máy chủ)
Cỡ chữ

Mỗi lần một trang động (chạy bằng PHP, kết nối cơ sở dữliệu) được mở, máy chủ phải làm rất nhiều việc: dịch mã, truy vấn dữ liệu, ghép HTML rồi mới gửi đi. Lưu lại thành quả của những bước đó để dùng lại chính là ý tưởng cốt lõi của bộ nhớ đệm phía máy chủ. Web22 viết bài này để bạn phân biệt rõ ba lớp đệm thường gặp và hiểu vì sao chúng quan trọng với tốc độ lẫn SEO.

Vì sao cần đệm ở phía máy chủ

Một website WordPress hay bất kỳ mã nguồn động nào đều không có sẵn trang HTML hoàn chỉnh. Khi có người truy cập, máy chủ mới bắt đầu dịch các tệp PHP thành mã máy, chạy hàng loạt truy vấn lấy bài viết, danh mục, bình luận từ cơ sở dữ liệu, rồi ghép tất cả lại. Quá trình này lặp lại y hệt cho mỗi lượt khách, dù nội dung hầu như không đổi.

Bộ nhớ đệm cắt bớt những công đoạn lặp lại đó. Thay vì tính toán lại, máy chủ lấy phần đã lưu ra trả ngay. Kết quả trực tiếp là TTFB (time to first byte — thời gian chờ byte đầu tiên) giảm xuống. Theo tài liệu của Google, nên giữ TTFB dưới khoảng 800 mili-giây ở phân vị 75 của người dùng để có trải nghiệm tốt.

Ba lớp đệm phía máy chủ gồm page cache, object cache và OPcache
Ba lớp đệm máy chủ làm việc ở ba tầng khác nhau, bổ trợ cho nhau.

Ba lớp server cache thường gặp

Người ta hay gói chung là “cache máy chủ”, nhưng thực tế có ba lớp đệm khác nhau, làm việc ở ba tầng khác nhau. Hiểu đúng vai từng lớp giúp bạn biết cần bật cái nào cho website của mình.

1. Page cache (đệm trang)

Đây là lớp dễ thấy hiệu quả nhất. Page cache lưu lại toàn bộ HTML đã dựng xong của một trang. Lần sau có khách vào đúng trang đó, máy chủ gửi thẳng tệp HTML đã lưu, gần như bỏ qua PHP và cơ sở dữ liệu. Lớp này phù hợp nhất với khách vãng lai (người chưa đăng nhập), vì nội dung họ thấy giống hệt nhau.

Các công cụ phổ biến: LiteSpeed Cache, WP Rocket, hoặc cấu hình ở tầng máy chủ như Nginx FastCGI cache và Varnish. Với trang giỏ hàng, tài khoản, trang quản trị, page cache thường được loại trừ vì nội dung khác nhau theo từng người.

2. Object cache (đệm đối tượng)

Page cache rất mạnh nhưng không dùng được cho trang cá nhân hoá (người dùng đăng nhập, giỏ hàng). Lúc đó object cache phát huy. Lớp này lưu lại kết quả của các truy vấn cơ sở dữ liệu và các mảnh dữ liệu hay được gọi đi gọi lại, đặt chúng trong bộ nhớ truy xuất nhanh như Redis hoặc Memcached.

Khi mã nguồn cần một dữ liệu đã từng lấy, nó đọc từ object cache thay vì hỏi lại cơ sở dữ liệu. Điều này giảm tải nặng nề cho cơ sở dữ liệu, đặc biệt hữu ích với trang nhiều người đăng nhập, sàn thương mại điện tử hoặc forum. Object cache không thay thế page cache, mà bổ trợ cho những phần page cache không phủ được.

3. OPcache (đệm mã PHP)

OPcache nằm sẵn trong PHP. Mỗi lần chạy, PHP phải dịch tệp mã nguồn thành bytecode (mã trung gian máy hiểu được). OPcache lưu phần bytecode đã dịch vào bộ nhớ chia sẻ, để các lần sau bỏ qua bước dịch. Đây là lớp âm thầm nhưng đáng giá: chỉ cần bật trong cấu hình PHP là toàn bộ website chạy mượt hơn mà không phải sửa code.

Lớp đệmLưu cái gìHợp với
Page cacheHTML hoàn chỉnh của trangKhách vãng lai, trang tĩnh nội dung
Object cacheKết quả truy vấn cơ sở dữ liệuTrang động, người đăng nhập, sàn bán hàng
OPcacheBytecode PHP đã dịchMọi website PHP

Server cache khác browser cache thế nào

Đừng nhầm đệm phía máy chủ với đệm phía trình duyệt. Browser cache (đệm trình duyệt) lưu tệp tĩnh như ảnh, CSS, JavaScript ngay trên máy của khách, giúp lần ghé sau khỏi tải lại. Còn server cache lưu trên máy chủ và phục vụ cho mọi khách. Một website nhanh thường dùng cả hai, thậm chí thêm tầng đệm ở CDN (mạng phân phối nội dung) đặt gần người dùng.

Server cache liên quan gì tới SEO

Google không chấm điểm trực tiếp TTFB như một Core Web Vital (chỉ số trải nghiệm trang cốt lõi). Tuy nhiên TTFB là nền móng cho mọi chỉ số khác: trình duyệt chưa nhận được byte đầu tiên thì chưa thể bắt đầu vẽ, nên một TTFB chậm khiến LCP (largest contentful paint — thời điểm phần nội dung lớn nhất hiện ra, đây mới là chỉ số được chấm) khó đạt mức tốt. Server cache giảm TTFB chính là cách gián tiếp cải thiện LCP.

Nói cách khác, đệm máy chủ thuộc nhóm việc nền của khâu rà soát kỹ thuật website. Nó không tự kéo thứ hạng lên, nhưng một trang trả chậm thì khó giữ chân khách và khó đạt ngưỡng trải nghiệm tốt. Đây là một mảnh trong bức tranh lớn hơn về tối ưu website cho công cụ tìm kiếm mà Web22 thường xử lý cùng với cấu trúc nội dung và liên kết.

Phân biệt đệm phía máy chủ và đệm phía trình duyệt về nơi lưu và đối tượng phục vụ
Đừng nhầm hai lớp đệm — web nhanh thường dùng cả hai.

Một lưu ý: đệm rồi vẫn cần làm nóng

Có một điểm hay gây nhầm. Server cache trả nhanh chỉ khi nội dung đã được lưu sẵn. Lần đầu tiên một trang được mở (hoặc ngay sau khi xoá cache), kho đệm còn trống, khách đầu tiên vẫn phải chờ máy chủ tính toán đầy đủ. Kỹ thuật chủ động truy cập trước để lấp đầy kho đệm gọi là làm nóng cache, và đó là một chủ đề riêng. Nếu bạn muốn hiểu cách lấp sẵn để khách thật luôn gặp bản nhanh, xem bài về làm nóng page cache.

Câu hỏi thường gặp

Bật server cache có làm khách thấy nội dung cũ không?

Có thể, nếu cache không được xoá khi nội dung thay đổi. Các plugin cache hiện đại tự xoá phần liên quan mỗi khi bạn cập nhật bài, nên trường hợp này hiếm khi xảy ra nếu cấu hình đúng.

Website nhỏ có cần cả ba lớp không?

OPcache nên luôn bật vì gần như không có nhược điểm. Page cache rất đáng dùng cho mọi site. Object cache (Redis/Memcached) đáng đầu tư khi website có nhiều truy vấn nặng hoặc nhiều người đăng nhập.

Server cache có thay thế hosting tốt được không?

Không. Đệm giúp tận dụng tối đa tài nguyên hiện có, nhưng nền hosting yếu vẫn giới hạn tốc độ. Cache và hosting bổ trợ cho nhau chứ không thay nhau.

Đọc tiếp

Bài viết
cùng chủ đề.

Tất cả bài viết
Chat Zalo