STATUS IS UPWIKI TỐI ƯU HÓA WEBSITE
20Tăng tốc
Hiệu năng và phân phối / Tăng tốc

Hướng dẫn lưu bộ đệm trình duyệt cho chủ sở hữu website

Đặt quy tắc HTTP rõ ràng để lượt truy cập lặp lại tránh phải tải xuống không cần thiết mà không giữ khách ở các trang cũ hoặc nội dung cá nhân hóa không an toàn.

Hướng dẫn lưu bộ đệm trình duyệt cho chủ sở hữu website — HƯỚNG DẪN TRỰC QUAN
ĐỌC
7 phút
NGUỒN
6
TÁI XÁC NHẬN
2027-03-27
đã rà soát
Web performance and release engineering reviewer
CÂU TRẢ LỜI NGẮN GỌN

Bắt đầu từ quyết định.

Áp một quy tắc cache khác nhau cho từng loại URL. Cấp thời hạn lâu cho các tệp mà nội dung không bao giờ thay đổi tại URL đó, ví dụ JavaScript, CSS, font và ảnh có tên chứa fingerprint/hash. Cấp cho HTML và các phản hồi không phiên bản một chính sách yêu cầu trình duyệt xác thực trước khi tái sử dụng khi tính tươi mới quan trọng. Công bố một URL tài sản mới mỗi khi tài sản thay đổi; thời gian lưu lâu không thể bị hoàn tác đáng tin cậy cho các bản sao vẫn đang ở trạng thái tươi.

Bắt đầu bằng header Cache-Control rõ ràng, sau đó xác minh header và hành vi trình duyệt trong môi trường staging. Kết hợp các phản hồi thân thiện với xác thực với ETag và, nếu có, Last-Modified. Xử lý riêng nội dung cá nhân hóa, tài khoản, thanh toán và các phản hồi nhạy cảm so với các trang công cộng. SIU sử dụng công việc này như tối ưu hóa trạng thái sẵn sàng chủ động: giảm công việc origin không cần thiết và ngăn lỗi phát hành liên quan đến cache trước khi chúng làm gián đoạn trang web sử dụng được.

HƯỚNG DẪN TRỰC QUAN

Nhìn công việc như một hệ thống.

Dùng sơ đồ này để nối các quyết định trong bài trước khi hành động theo từng thủ thuật.

SIUTăng tốc
01Áp chính sách theo tài nguyên, không theo máy chủ
02Sử dụng chính xác các thuật ngữ Cache-Control
03Phiên bản hóa tài sản bất biến trước khi gán thời hạn dài
04Giữ HTML luôn cập nhật bằng xác thực, không bằng cache lâu
01

Áp chính sách theo tài nguyên, không theo máy chủ

Lập danh mục các URL đại diện trước khi thay đổi header: trang chủ, trang nội dung, application shell, CSS, JavaScript, ảnh, font, API, đăng nhập, tài khoản, thanh toán và tải về. Với mỗi URL, ghi lại liệu phản hồi có công cộng hay cá nhân hóa, liệu URL có thay đổi khi byte thay đổi, và bao lâu thì một sửa lỗi phải đến được khách truy cập.

Tạo một ma trận chính sách từ bản kiểm kê đó. Một tài sản công cộng định danh theo nội dung cần quy tắc khác so với HTML ở địa chỉ ổn định. Các phản hồi không có Cache-Control vẫn có thể bị cache theo heuristic, nên quy tắc tường minh dễ kiểm tra hơn.

Thời hạn tươi

Khoảng thời gian một phản hồi lưu trữ có thể được tái sử dụng; max-age cho giá trị này theo giây.

02

Sử dụng chính xác các thuật ngữ Cache-Control

Cache-Control chỉ dẫn cho trình duyệt và các bộ đệm chia sẻ cách lưu trữ và tái sử dụng phản hồi. max-age=N cho phép tái sử dụng trong khi còn tươi. s-maxage=N thiết lập thời hạn tươi cho cache chia sẻ và ghi đè max-age ở đó, nhưng trình duyệt bỏ qua s-maxage. public cho phép bất kỳ bộ đệm nào lưu; private cho phép trình duyệt lưu nhưng ngăn lưu trong cache chia sẻ.

no-cache cho phép lưu nhưng yêu cầu xác thực tới origin trước khi tái sử dụng. no-store nghĩa là các bộ đệm không được lưu phản hồi, nhưng không phải là biện pháp bảo vệ riêng tư hoàn chỉnh. Dùng must-revalidate khi việc phục vụ nội dung đã hết hạn là không chấp nhận được; trong trường hợp origin không sẵn sàng, hệ thống có thể trả về 504 thay vì một bản sao lỗi thời.

Tránh dùng no-store một cách bao quát

Nó loại bỏ việc lưu trữ thay vì chỉ yêu cầu kiểm tra; chỉ dùng cho các phản hồi thực sự không được lưu.

03

Phiên bản hóa tài sản bất biến trước khi gán thời hạn dài

URL tài sản có phiên bản bao gồm fingerprint nội dung hoặc phiên bản phát hành, ví dụ app.4f2c.js. Khi byte của tài sản thay đổi, công bố một URL khác và cập nhật tham chiếu trong HTML. Cache sẽ thấy một tài nguyên mới, vì vậy khách sẽ tải tài sản mới mà không cần phải invalidation tới mọi trình duyệt.

Đối với một biểu diễn sẽ không thay đổi trong suốt thời hạn tươi của nó, Cache-Control: max-age=31536000, immutable là một mẫu thực tế. immutable báo cho các client hỗ trợ không thực hiện revalidate có điều kiện khi còn tươi. Không áp dụng nó hoặc max-age một năm cho một tệp có thể thay đổi cùng-URL. Giữ lại các tài sản fingerprinted trước đó trong khi HTML bị cache có thể vẫn tham chiếu đến chúng.

HTML là bản manifest

HTML chọn URL tài sản, vì vậy thứ tự phát hành phải giữ lại thế hệ được tham chiếu.

04

Giữ HTML luôn cập nhật bằng xác thực, không bằng cache lâu

HTML thường có URL ổn định thân thiện với con người và thay đổi theo nội dung, tham chiếu tài sản, feature flag hoặc thông báo bảo mật. Một mẫu HTML công cộng thận trọng là Cache-Control: no-cache kết hợp với ETag và Last-Modified khi nền tảng của bạn có thể tạo chúng chính xác. Trình duyệt lưu body nhưng sẽ gửi yêu cầu có điều kiện trước khi tái sử dụng; nếu không đổi thì server trả 304 Not Modified mà không có body.

ETag nhận dạng phiên bản tài nguyên. Trên một phản hồi đã hết tươi, trình duyệt có thể gửi ETag trong If-None-Match; nếu trùng, server trả 304, nếu không sẽ gửi biểu diễn mới. Hướng dẫn RFC ưu tiên cả ETag và Last-Modified trên một phản hồi 200 khi có thể. no-cache không hứa hẹn xác thực khi người dùng điều hướng Back hoặc Forward vì trình duyệt có thể khôi phục snapshot lịch sử phiên.

Chất lượng validator

ETag phải thay đổi khi biểu diễn thay đổi; kiểm tra nó trên các origin và môi trường triển khai khác nhau.

05

Tách biệt phân phối công cộng và các phản hồi cá nhân hóa/nhạy cảm

Một cache chia sẻ, như CDN, có thể tái sử dụng một phản hồi cho nhiều người dùng. Không để nó tái sử dụng HTML hoặc dữ liệu API đặc thù tài khoản cho nhiều người dùng. Với nội dung cá nhân hóa có thể tồn tại trong trình duyệt, private và no-cache là khởi điểm hợp lý: nó ngăn lưu trong cache chia sẻ và yêu cầu xác thực.

Với các phản hồi không nên lưu, dùng no-store và rà soát mã ứng dụng, quy tắc CDN, service worker, bộ nhớ trình duyệt, log và trang lỗi. Header thôi không cấu thành chương trình riêng tư, tuân thủ hay bảo mật thanh toán hoàn chỉnh. Hãy để đội bảo mật, bảo mật dữ liệu và thanh toán có trình độ đánh giá các luồng nhạy cảm và các yêu cầu áp dụng.

Thay đổi phân quyền

Kiểm tra đăng nhập, đăng xuất, chuyển tài khoản và thay đổi quyền với cache trình duyệt và CDN đã ấm.

06

Triển khai thay đổi cache như một bản phát hành có thể đảo ngược

Chụp trạng thái header và hành vi body cơ sở cho yêu cầu chưa cache và yêu cầu lặp lại. Trong staging, triển khai tài sản có phiên bản trước, sau đó HTML tham chiếu chúng, và kiểm tra HTML cũ được cache với origin mới. Kiểm tra cả đường thẳng tới origin và qua CDN nếu cả hai tồn tại. Header trong DevTools Network nên hiển thị chính sách mong muốn và hành vi lặp lại.

Giữ một manifest phát hành của URL tài sản, quy tắc header và phiên bản cấu hình. Nếu một phát hành kết hợp các file client không tương thích, phục hồi HTML tương thích và hành vi ứng dụng, nhưng không ghi đè một file fingerprinted đã công bố. Trỏ lại HTML về thế hệ biết là tốt và giữ cả hai thế hệ trong khi HTML được cache có thể yêu cầu chúng. Một purge trên cache chia sẻ không thể buộc mọi trình duyệt loại bỏ một phản hồi đang còn tươi.

Khắc phục chủ động

Biến lỗi kiểm tra header, 404 tài sản và mismatch phiên bản thành các thay đổi cho checklist phát hành tiếp theo.

HÀNH ĐỘNG / XÁC MINH

Hướng dẫn việc cần làm thiết thực.

  1. 01

    Kiểm kê lớp phản hồi

    Phân loại các URL mẫu là công cộng hay cá nhân hóa, có thể thay đổi hay đã phiên bản.

    XÁC MINH: Bao gồm HTML, tài sản, API, xác thực, tài khoản, thanh toán và trang lỗi.
  2. 02

    Ghi lại header hiện tại

    Lưu Cache-Control, ETag, Last-Modified, Age, Vary và status tại origin và CDN.

    XÁC MINH: Có snapshot trước thay đổi cho mỗi mẫu.
  3. 03

    Fingerprint các tài sản có thể thay đổi

    Cho build tạo một URL tài sản mới khi byte của nó thay đổi.

    XÁC MINH: Tài sản thay đổi tạo ra URL khác và tham chiếu trong HTML thay đổi.
  4. 04

    Đặt chính sách rõ ràng

    Chỉ dùng quy tắc thời gian dài cho các URL phiên bản bất biến; dùng chính sách ưu tiên xác thực cho các URL ổn định.

    XÁC MINH: Kiểm tra header khớp với chính sách dự định.
  5. 05

    Kiểm tra xác thực

    Kiểm tra một tài liệu không đổi trả 304 sau yêu cầu có điều kiện và một tài liệu thay đổi trả 200 với ETag mới.

    XÁC MINH: Traces trong staging cho thấy cả hai đường dẫn.
  6. 06

    Thử ranh giới riêng tư

    Kiểm tra hai tài khoản, đăng xuất, thay đổi role và các route nhạy cảm với cache đã ấm.

    XÁC MINH: Không có phản hồi cá nhân hóa nào bị chéo giữa người dùng.
  7. 07

    Chứng minh tương thích phát hành

    Tải HTML cũ đã cache sau phát hành tiếp theo.

    XÁC MINH: HTML cũ và hiện tại tải các tài sản được tham chiếu mà không gặp 404 hay lỗi script.
  8. 08

    Tài liệu hóa hồi quy

    Ghi lại thế hệ tốt, phiên bản header, chủ sở hữu và thời gian giữ tài sản cũ.

    XÁC MINH: Một drill ngoài sản xuất khôi phục thế hệ biết là tốt mà không sửa một URL bất biến.
CHỦ ĐỀ THẢO LUẬN

So sánh các đánh đổi, không chia sẻ dữ liệu riêng tư.

Dùng các câu hỏi này với nhóm hoặc cộng đồng chủ sở hữu website. Chia sẻ phương pháp và bài học, nhưng tuyệt đối không dán thông tin đăng nhập, hồ sơ khách hàng hay chi tiết hạ tầng không công khai.

  1. 01

    Những lớp URL nào trên site của bạn khó phân loại nhất là công cộng, cá nhân hóa, bất biến hay thay đổi thường xuyên, và bạn đang ghi chép quyết định đó như thế nào?

  2. 02

    Test thứ tự phát hành nào hữu ích nhất để phát hiện mismatch giữa HTML cũ và tài sản mới trước khi khách gặp phải?

  3. 03

    Quy tắc CDN, ứng dụng và cache trình duyệt của bạn chồng chéo ở đâu, và ai chịu trách nhiệm xác minh hành vi kết hợp của chúng khớp với chính sách dự định?

TÀI NGUYÊN PHỔ BIẾN / UY TÍN

Mở tài liệu nguồn.

IETFRFC 9111: HTTP Caching ↗

Giải thích về tươi (freshness), xác thực (validation), chỉ thị cache, invalidation và giới hạn với thông tin nhạy cảm.

Đã rà soát 2026-09-27
IETFRFC 8246: HTTP Immutable Responses ↗

Định nghĩa cache immutable, phạm vi áp dụng và các cân nhắc hỏng/hủy.

Đã rà soát 2026-09-27
MDN Web DocsHTTP caching ↗

Hướng dẫn thực tiễn về validators, 304, cá nhân hóa và cache-busting.

Đã rà soát 2026-09-27
MDN Web DocsCache-Control header ↗

Tham chiếu cho max-age, s-maxage, no-cache, no-store, private, public và must-revalidate.

Đã rà soát 2026-09-27
MDN Web DocsETag header ↗

Giải thích entity tag, If-None-Match và xác thực 304.

Đã rà soát 2026-09-27
web.devPrevent unnecessary network requests with the HTTP Cache ↗

Hướng dẫn thực tế về URL có phiên bản, validators, chính sách và triển khai.

Đã rà soát 2026-09-27

Chính sách nguồn. Bài viết này sử dụng các tiêu chuẩn đọc được và tài liệu kỹ thuật bên thứ nhất. Nó tránh những khẳng định hiệu năng không được hỗ trợ và tách quy tắc HTTP khỏi cấu hình nền tảng cụ thể.

GIẢI ĐÁP NHANH

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

no-cache có nghĩa là trình duyệt không thể lưu trang không?

Không. no-cache cho phép lưu nhưng yêu cầu xác thực thành công với origin trước khi tái sử dụng. Dùng no-store chỉ khi phản hồi không được lưu, đồng thời nhận thức rằng no-store một mình không phải là biện pháp bảo mật riêng tư hoàn chỉnh.

Mọi file tĩnh có nên được cấp thời hạn cache một năm không?

Không. max-age một năm chỉ phù hợp khi byte của URL đó sẽ không thay đổi trong khoảng thời gian đó, thường vì URL đã được fingerprint hoặc phiên bản hóa. Các tệp có thể thay đổi cùng-URL cần chính sách ngắn hơn hoặc ưu tiên xác thực.

Purge trên CDN có sửa được lỗi cache của trình duyệt không?

Nó có thể loại bỏ bản sao trong cache chia sẻ được quản lý, nhưng không thể buộc mọi trình duyệt loại bỏ một phản hồi đang còn tươi. Công bố một URL tài sản phiên bản mới và cập nhật tham chiếu HTML; rồi dùng kế hoạch rollback để phục hồi thế hệ tương thích nếu cần.

Status Is UP Editorial Team · Uptime Enablement Editors

Được rà soát bởi Web performance and release engineering reviewer. Xuất bản 2026-09-27; cập nhật 2026-09-30.