Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Quản lý hành vi bộ nhớ cache

Lưu trữ Firebase sử dụng CDN toàn cầu mạnh mẽ để làm cho trang web của bạn nhanh nhất có thể.

Mọi nội dung tĩnh được yêu cầu sẽ tự động được lưu vào bộ nhớ đệm trên CDN . Nếu bạn triển khai lại nội dung trang web của mình, Lưu trữ Firebase sẽ tự động xóa tất cả nội dung tĩnh được lưu trong bộ nhớ cache của bạn trên CDN cho đến khi có yêu cầu tiếp theo.

Tuy nhiên, vì các dịch vụ Cloud Functions và Cloud Run tạo nội dung động, nội dung cho một URL nhất định có thể khác nhau dựa trên những thứ như thông tin người dùng nhập hoặc danh tính của người dùng. Để giải thích điều này, các yêu cầu được xử lý bằng mã phụ trợ không lưu vào bộ nhớ cache trên CDN theo mặc định.

Tuy nhiên, bạn có thể định cấu hình hành vi lưu vào bộ nhớ đệm cho nội dung động . Ví dụ: nếu một hàm chỉ tạo nội dung mới theo định kỳ, bạn có thể tăng tốc ứng dụng của mình bằng cách lưu vào bộ nhớ đệm nội dung đã tạo trong ít nhất một khoảng thời gian ngắn.

Bạn cũng có thể giảm chi phí thực thi chức năng vì nội dung được cung cấp từ CDN thay vì thông qua một chức năng được kích hoạt. Đọc thêm về cách tối ưu hóa thực thi chức năng và dịch vụ trong tài liệu Cloud FunctionsCloud Run .

Tìm hiểu thêm về hành vi lưu vào bộ nhớ đệm trong tài liệu dành cho nhà phát triển web của Google.

Đặt Cache-Control

Công cụ chính mà bạn sử dụng để quản lý bộ đệm cho nội dung động là tiêu đề Cache-Control . Bằng cách định cấu hình tiêu đề này, bạn có thể giao tiếp với cả trình duyệt và CDN trong thời gian nội dung của bạn có thể được lưu trong bộ nhớ cache. Trong chức năng của mình, bạn đặt Cache-Control như sau:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

Trong tiêu đề ví dụ này, các lệnh thực hiện ba việc:

  • public - Đánh dấu bộ nhớ cache là public . Điều này có nghĩa là cả trình duyệt máy chủ trung gian (có nghĩa là CDN cho Lưu trữ Firebase) đều có thể lưu nội dung vào bộ nhớ cache.

  • max-age - Cho trình duyệt và CDN biết họ có thể lưu nội dung vào bộ nhớ cache bao nhiêu giây. Khi hết thời gian đã đặt, trình duyệt và CDN phải xác thực lại nội dung với máy chủ gốc. Trong tiêu đề ví dụ, chúng tôi đang cho phép trình duyệt và CDN lưu nội dung vào bộ nhớ đệm trong năm phút (xem s-maxage bên dưới để biết các điều khiển cụ thể cho bộ nhớ đệm CDN).

  • s-maxage - Ghi đè chỉ thị max-age chỉ cho CDN-caching; cho CDN biết nó có thể lưu nội dung vào bộ nhớ cache bao nhiêu giây. Khi hết thời gian đã đặt, CDN phải xác thực lại nội dung với máy chủ gốc. Trong tiêu đề ví dụ, chúng tôi đang ghi đè cài đặt cho max-age cho CDN và cho phép CDN lưu nội dung vào bộ nhớ cache trong mười phút.

Đối với max-ages-maxage , hãy đặt giá trị của chúng thành khoảng thời gian dài nhất mà bạn cảm thấy thoải mái khi người dùng nhận được nội dung cũ. Nếu một trang thay đổi vài giây một lần, hãy sử dụng một giá trị thời gian nhỏ. Tuy nhiên, các loại nội dung khác có thể được lưu vào bộ nhớ cache một cách an toàn hàng giờ, hàng ngày hoặc thậm chí hàng tháng.

Bạn có thể tìm hiểu thêm về tiêu đề Cache-Control trên Mạng nhà phát triển Mozilla và trong tài liệu dành cho nhà phát triển web của Google.

Khi nào nội dung được lưu trong bộ nhớ cache được phục vụ?

Trình duyệt và CDN lưu nội dung của bạn vào bộ nhớ cache dựa trên:

  • Tên máy chủ
  • Con đường
  • Chuỗi truy vấn
  • Nội dung của tiêu đề yêu cầu được chỉ định trong tiêu đề Vary

Tiêu đề thay đổi

Tiêu đề Vary xác định tiêu đề yêu cầu nào nên được sử dụng để cung cấp phản hồi thích hợp (cho dù nội dung được lưu trong bộ nhớ cache có hợp lệ hay không hoặc nếu nội dung cần được xác thực lại với máy chủ gốc).

Hầu hết thời gian, bạn không cần phải lo lắng về tiêu đề Vary . Lưu trữ Firebase tự động đặt tiêu đề Vary thích hợp cho phản hồi của bạn đối với các tình huống phổ biến. Điều này bao gồm việc đảm bảo rằng bất kỳ cookie phiên hoặc tiêu đề ủy quyền nào mà bạn đang sử dụng đều được tạo thành một phần của khóa bộ nhớ cache, điều này ngăn ngừa rò rỉ nội dung ngẫu nhiên.

Trong một số trường hợp sử dụng nâng cao, bạn có thể có các tiêu đề khác mà bạn cần để ảnh hưởng đến bộ nhớ cache. Khi đúng như vậy, bạn có thể chỉ cần đặt tiêu đề Vary cho phản hồi của mình:

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

Với các cài đặt này, hai yêu cầu giống hệt nhau với các tiêu đề X-My-Custom-Header khác nhau được lưu vào bộ nhớ cache riêng.

Sử dụng cookie

Khi sử dụng Lưu trữ Firebase cùng với Chức năng đám mây hoặc Chạy đám mây, cookie thường bị loại bỏ khỏi các yêu cầu đến. Điều này là cần thiết để cho phép hoạt động bộ đệm CDN hiệu quả. Chỉ cookie __session có tên đặc biệt mới được phép chuyển qua quá trình thực thi ứng dụng của bạn.

Khi xuất hiện, cookie __session tự động được tạo thành một phần của khóa bộ nhớ cache, có nghĩa là hai người dùng có cookie khác nhau không thể nhận phản hồi được lưu trong bộ nhớ cache của người kia. Chỉ sử dụng cookie __session nếu ứng dụng của bạn cung cấp nội dung khác nhau tùy thuộc vào ủy quyền của người dùng.