Tận dụng bộ nhớ đệm trình duyệt để tăng tốc website

Nhật Quang

Gefreiter
Bộ nhớ đệm trình duyệt (browser caching) giúp tải lại trang nhanh hơn bằng cách lưu bản sao tài nguyên trên thiết bị người dùng. Bài viết giải thích cách hoạt động, các loại cache, thiết lập header Cache-Control và ví dụ thực tế để bạn tối ưu tốc độ trang.

69d8fddcf6b0c3c966100532e3f14646.png


4c1ee9bf3cee9ad027dc68961a65ea9c.jpg


Cache là gì và vì sao nó nhanh​

Bộ nhớ đệm (caching) là việc lưu bản sao các tập tin vào một vùng lưu tạm để truy xuất nhanh hơn. Khi trình duyệt lưu một tài nguyên vào cache, lần sau người dùng truy cập cùng trang, trình duyệt có thể lấy từ cache thay vì tải lại từ máy chủ, giúp giảm thời gian tải đáng kể.

Nguyên tắc đơn giản: request tốt nhất là request không được gửi​

Khi người dùng mở trang web, trình duyệt phải tải HTML, CSS, JavaScript, hình ảnh và các tài nguyên khác. Nếu đã có sẵn trong cache, trình duyệt sẽ hiển thị nhanh hơn rất nhiều so với việc tải về từ server.

Ví dụ thực tế​

Trong thử nghiệm tải trang sản phẩm Amazon, khi bật cache đã giảm đến 62% "page weight" — cải thiện lớn cho thời gian tải.
ceefaf36e29974e3bccfaab50d99dfa0.png


Cache giúp cải thiện Core Web Vitals Core Web Vitals là tập hợp chỉ số đo trải nghiệm người dùng, có thể ảnh hưởng đến xếp hạng tìm kiếm Google. Caching đặc biệt hữu ích cho lượt truy cập lặp lại, giúp cải thiện các chỉ số như First Contentful Paint (FCP) và Largest Contentful Paint (LCP).

Quan sát thay đổi hiệu năng​

Ví dụ trên trang chủ Apple cho thấy sau khi cache, LCP được cải thiện nhưng FCP có thể tệ hơn trong một số trường hợp — điều này cho thấy cần kiểm tra kỹ sau khi bật cache vì kết quả có thể khác nhau.
596ad88ace72bdadd57b832a2f3c9688.png


Các loại cache chính​

  • Client-side cache (bộ nhớ đệm trình duyệt): lưu trên thiết bị người dùng, nhanh nhất (gồm Service Worker cache, back/forward cache, Cache Storage API).
  • CDN cache: nằm trên mạng phân phối nội dung, gần người dùng hơn so với origin server.
  • Proxy cache: nằm trên máy chủ trung gian giữa người dùng và web server.
  • Application cache: được tích hợp trong ứng dụng để lưu dữ liệu cần thiết.
Cache trên thiết bị người dùng là nhanh nhất vì không có độ trễ mạng; CDN còn yêu cầu request qua mạng nhưng thường nhanh hơn truy về origin. Trình duyệt được coi là private cache, CDN là public cache.

Tập trung vào bộ nhớ đệm trình duyệt​

Bài viết này chủ yếu nói về browser caching. Để caching hiệu quả, server phải gửi header cache đúng; nếu không, trình duyệt sẽ áp dụng quy tắc mặc định và có thể không theo ý bạn.

Header Cache-Control cơ bản​

Header Cache-Control là công cụ chính để điều khiển cách trình duyệt lưu và sử dụng tài nguyên. Một số directive phổ biến:
  • public / private
  • max-age=
  • must-revalidate
  • immutable
Bạn có thể kết hợp các directive để tạo chiến lược caching phù hợp cho từng loại tài nguyên.

Gợi ý cấu hình​

  • Cho tài nguyên động (ví dụ HTML trang giao dịch, trang cửa hàng): Cache-Control: max-age=0, must-revalidate, public

    Giải thích: trình duyệt lưu nhưng sẽ luôn xác nhận với server trước khi dùng, phù hợp cho nội dung thay đổi thường xuyên.

[*]Cho tài nguyên tĩnh đã version (ví dụ main.12345678.css, ảnh đã gắn hash): Cache-Control: public, max-age=31536000, immutable

  • Giải thích: lưu 1 năm và coi là bất biến — khi đổi nội dung, đổi tên file để invalidation.


Nếu tài nguyên không versioned (ví dụ main.css), hãy triển khai versioning trước khi áp dụng chính sách dài hạn.

Cache revalidation — khi trình duyệt hỏi server​

Khi trình duyệt cache một tài nguyên với max-age=10,must-revalidate,public thì sau 10 giây tài nguyên trở nên "stale". Thay vì tải lại toàn bộ, trình duyệt có thể gửi yêu cầu kiểm tra server xem nội dung có thay đổi không. Có ba kịch bản:

1. Tài nguyên còn trong thời gian max-age (fresh): tải từ cache, không cần kết nối mạng.
fd5fe8a6ef5643a2dadd5b3c6c22e757.png


2. Tài nguyên đã stale nhưng server trả rằng vẫn chưa thay đổi: trình duyệt dùng bản cache sau khi nhận xác nhận.
b621f45ed693bb89484719d2156940b1.png


3. Tài nguyên đã stale và server trả về phiên bản mới: trình duyệt tải phiên bản mới và cập nhật cache.

Trình tự khi người dùng truy cập:

- Lần đầu: trình duyệt tải tài nguyên từ server và lưu vào cache.

- Lần hai (trong max-age): trình duyệt dùng bản cache, tải trang rất nhanh.

- Lần ba (sau khi stale): trình duyệt có thể gửi yêu cầu xác thực; nếu server cho biết không đổi thì dùng cache, nếu đổi thì tải về bản mới.

Lời khuyên khi triển khai​

  • Luôn cấu hình header Cache-Control phù hợp với loại tài nguyên.
  • Sử dụng versioning (hash) cho CSS/JS/ảnh để có thể đặt thời gian cache dài.
  • Kiểm thử cẩn thận sau khi bật cache — một số chỉ số có thể thay đổi không mong muốn.
  • Sử dụng CDN để phân phối tài nguyên gần người dùng và giảm tải origin.
  • Chuẩn bị kế hoạch xử lý khi cache gây lỗi (hướng dẫn người dùng xóa cache tạm thời nếu cần).

Kết luận​

Bộ nhớ đệm trình duyệt là công cụ mạnh giúp cải thiện tốc độ tải trang và trải nghiệm người dùng, đặc biệt với lượt truy cập lặp lại. Thiết lập đúng Cache-Control, kết hợp CDN và versioning tài nguyên sẽ mang lại cải thiện hiệu năng rõ rệt. Hãy kiểm tra và theo dõi các chỉ số Core Web Vitals để đảm bảo tác động tích cực.

Nguồn: https://www.debugbear.com/blog/browser-caching
 
Back
Top