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.
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).
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.
[*]Cho tài nguyên tĩnh đã version (ví dụ main.12345678.css, ảnh đã gắn hash): Cache-Control: public, max-age=31536000, immutable
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.
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.
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.
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.
Nguồn: https://www.debugbear.com/blog/browser-caching
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.
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.
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.
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
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.
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.
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
Bài viết liên quan
Được quan tâm
![[VNXF 2x] Best Statistics Pro – Thống kê nâng cao, tối ưu hiệu năng cho XenForo 1.1](https://cdn.vnxf.vn/data/assets/logo_alternate/vnxf-2x-best-statistics-pro-m.webp)


