Google is committed to advancing racial equity for Black communities. See how.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Quản lý hành vi bộ đệm

Firebase Hosting 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 trong bộ nhớ cache trên CDN . Nếu bạn triển khai lại nội dung trang web của mình, Firebase Hosting sẽ tự động xóa tất cả nội dung tĩnh được lưu trong bộ nhớ cache của bạn cho đến khi có yêu cầu tiếp theo.

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

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

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

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

Đặt Kiểm soát bộ đệm

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 bao lâu nội dung của bạn có thể được lưu trữ. Trong chức năng của bạn, bạn đặt Cache-Control như vậy:

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

Trong tiêu đề ví dụ này, các chỉ thị thực hiện ba điều:

  • public - Đánh dấu bộ đệm 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 Firebase Hosting) có thể lưu trữ nội dung.

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

  • s-maxage - Ghi đè chỉ thị max-age chỉ cho bộ nhớ đệm CDN; cho CDN biết bao nhiêu giây nó có thể lưu trữ nội dung. Khi hết thời gian đã đặt, CDN phải xác nhận lại nội dung với máy chủ gốc. Trong tiêu đề ví dụ, chúng tôi sẽ ghi đè cài đặt cho max-age cho CDN và cho phép CDN lưu trữ nội dung 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 cứ sau vài giây, hãy sử dụng giá trị thời gian nhỏ. Tuy nhiên, các loại nội dung khác có thể được lưu trữ an toàn trong nhiều giờ, nhiều ngày hoặc thậm chí vài tháng.

Bạn có thể tìm hiểu thêm về tiêu đề Cache-Control đệm 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 trữ được phục vụ?

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

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

Tiêu đề khác nhau

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

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

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ộ đệm. Khi đó, bạn 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 trữ riêng.

Sử dụng cookie

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

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