Hỗ trợ tiêu đề phản hồi HTTP

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Chủ đề này mô tả cách Edge xử lý các tiêu đề lưu vào bộ nhớ đệm HTTP/1.1 khi bạn sử dụng chính sách ResponseCache. Apigee Edge hiện hỗ trợ một tập hợp con các tiêu đề và lệnh lưu vào bộ nhớ đệm HTTP/1.1 (các tính năng không được hỗ trợ được liệt kê trong chủ đề này) nhận được từ máy chủ đích phụ trợ (gốc).

Ngoài ra, với một số tiêu đề nhất định, Edge sẽ thực hiện hành động dựa trên lệnh tương ứng. Trong một số trường hợp, các tiêu đề bộ nhớ đệm HTTP/1.1 này sẽ ghi đè bất kỳ hành vi nào được chỉ định trong chính sách ResponseCache. Ví dụ: nếu tiêu đề Cache-Control được trả về từ một máy chủ phụ trợ, thì bạn có thể để lệnh s-maxage của tiêu đề có thể ghi đè các chế độ cài đặt thời hạn khác trong chính sách này.

Đầu trang Hỗ trợ
Kiểm soát bộ nhớ đệm Được hỗ trợ trên các phản hồi được trả về từ máy chủ gốc phụ trợ, chứ không phải từ yêu cầu của ứng dụng. Edge hỗ trợ một tập hợp con các lệnh.
Hết hạn Được hỗ trợ. Có thể ghi đè.
Thẻ thực thể (ETag) Hành vi cụ thể cho If-MatchIf-None-Match.
If-Modified-Since Trong các yêu cầu GET, tiêu đề sẽ được chuyển tới máy chủ gốc ngay cả khi có một mục nhập bộ nhớ đệm hợp lệ.
Chấp nhận-mã hoá Edge gửi phản hồi nén hoặc không nén tuỳ thuộc vào các tiêu đề đến.

Kiểm soát bộ nhớ đệm

Apigee Edge chỉ hỗ trợ tiêu đề Cache-Control trên các phản hồi được trả về từ máy chủ gốc phụ trợ (thông số kỹ thuật HTTP/1.1 cho phép các tiêu đề Cache-Control trong cả yêu cầu của ứng dụng khách và phản hồi của máy chủ gốc). Máy chủ gốc có thể bao gồm cả điểm cuối mục tiêu được xác định trong proxy API Apigee Edge và những điểm cuối được tạo bằng lệnh gọi API TargetServer.

Giới hạn hỗ trợ kiểm soát bộ nhớ đệm

Apigee Edge hỗ trợ một tập hợp con chức năng tiêu đề phản hồi Cache-Control được xác định trong thông số kỹ thuật HTTP/1.1. Xin lưu ý những điều sau:

  • Apigee Edge không hỗ trợ các tiêu đề Cache-Control gửi đến các yêu cầu của khách hàng đến.
  • Apigee Edge chỉ hỗ trợ khái niệm bộ nhớ đệm công khai. (Theo thông số kỹ thuật HTTP, Cache-Control có thể ở chế độ công khai (dùng chung) hoặc riêng tư (một người dùng).
  • Apigee Edge chỉ hỗ trợ một số lệnh phản hồi Cache-Control trong thông số kỹ thuật HTTP/1.1. Xem bài viết Hỗ trợ lệnh cho tiêu đề phản hồi của bộ nhớ đệm Kiểm soát bộ nhớ đệm để biết thông tin chi tiết.

Hỗ trợ các lệnh tiêu đề phản hồi cho bộ nhớ đệm Kiểm soát bộ nhớ đệm

Apigee hỗ trợ một tập hợp con lệnh trong thông số kỹ thuật HTTP/1.1 đối với các phản hồi từ máy chủ gốc. Bảng sau đây mô tả tính năng hỗ trợ của Apigee Edge đối với các lệnh tiêu đề phản hồi HTTP Cache-Control.

Để biết thêm thông tin chi tiết về các lệnh được liệt kê tại đây, hãy xem phần Cache-Control trong thông số kỹ thuật HTTP/1.1.

Lệnh bộ nhớ đệm kiểm soát Cách Apigee Edge xử lý chỉ thị
cache-extension Không được hỗ trợ.
max-age

Nếu chính sách ResponseCache của bạn đặt phần tử <UseResponseCacheHeaders> thành true, thì phản hồi có thể được lưu vào bộ nhớ đệm trong số giây mà lệnh này chỉ định.

Lệnh này bị lệnh s-maxage ghi đè và ghi đè tiêu đề Expires. Bạn cũng có thể ghi đè giá trị này bằng phần tử <ExpirySettings> của chính sách. Để biết thêm thông tin, hãy xem phần "Đặt thời hạn của mục nhập bộ nhớ đệm" và <UseResponseCacheHeaders> trong Chính sách bộ nhớ đệm của phản hồi.

must-revalidate Không được hỗ trợ. Apigee Edge sẽ xoá mọi mục nhập bộ nhớ đệm ngay khi chúng hết hạn.
no-cache

Edge lưu phản hồi gốc vào bộ nhớ đệm, nhưng phải xác thực lại với máy chủ gốc trước khi dùng để đáp ứng mọi yêu cầu tiếp theo của ứng dụng. Quy tắc này cho phép nguồn gốc trả về một phản hồi 304 Not Modified (Không được sửa đổi) để cho biết rằng phản hồi sẽ được trả về từ bộ nhớ đệm, nhờ đó lưu quá trình xử lý cần thiết để trả về toàn bộ phản hồi. Nếu máy chủ gốc trả về phản hồi đầy đủ, thì máy chủ sẽ thay thế mục nhập bộ nhớ đệm hiện có. Mọi tên trường được chỉ định bằng lệnh này đều bị bỏ qua.

no-store Không được hỗ trợ.
no-transform Không được hỗ trợ.
private Không được hỗ trợ. Nếu nhận được lệnh này, thì phản hồi gốc sẽ không được lưu vào bộ nhớ đệm. Mọi tên trường đều bị bỏ qua.
proxy-revalidate Không được hỗ trợ. Apigee Edge sẽ xoá mọi mục nhập bộ nhớ đệm ngay khi chúng hết hạn.
public Edge lưu phản hồi gốc vào bộ nhớ đệm, ngay cả khi các lệnh khác chỉ ra khác. Theo thông số kỹ thuật HTTP/1.1, ngoại lệ duy nhất của quy tắc này là khi phản hồi có chứa tiêu đề Uỷ quyền.
s-maxage

Nếu chính sách ResponseCache của bạn đặt phần tử <UseResponseCacheHeaders> thành true, thì phản hồi có thể được lưu vào bộ nhớ đệm trong số giây mà lệnh này chỉ định.

Lệnh này sẽ ghi đè lệnh max-age và tiêu đề Expires. Bạn có thể ghi đè giá trị này bằng phần tử <ExpirySettings> của chính sách. Để biết thêm thông tin, hãy xem phần "Đặt thời hạn của mục nhập bộ nhớ đệm" và <UseResponseCacheHeaders> trong Chính sách bộ nhớ đệm của phản hồi.

Ngày hết hạn:

Khi bạn đặt cờ UseResponseCacheHeaders trong chính sách ResponseCache thành true, Edge có thể sử dụng tiêu đề Expires để xác định thời gian tồn tại (TTL) của một mục đã lưu vào bộ nhớ đệm. Tiêu đề này chỉ định ngày/giờ mà sau đó mục nhập trong bộ nhớ đệm của phản hồi bị coi là lỗi thời. Tiêu đề này cho phép máy chủ phát tín hiệu khi có thể trả về một giá trị đã lưu vào bộ nhớ đệm dựa trên dấu thời gian.

Các định dạng ngày được chấp nhận cho tiêu đề Expires được mô tả trong thông số kỹ thuật HTTP/1.1. Ví dụ:

Hết hạn: Thứ Năm, 01/12/1994 16:00:00 GMT

Để biết thông tin chi tiết về định dạng ngày/giờ HTTP, hãy xem phần Định dạng ngày/giờ trong thông số kỹ thuật HTTP/1.1.

Để biết thêm thông tin về tiêu đề Expires, hãy xem phần Định nghĩa trường tiêu đề trong thông số kỹ thuật HTTP/1.1.

ETag

Thẻ thực thể (ETag) là giá trị nhận dạng liên kết với một tài nguyên được yêu cầu. Khi sử dụng ETag, máy chủ có thể xác định xem tài nguyên được yêu cầu và tài nguyên được liên kết đã lưu vào bộ nhớ đệm có khớp nhau hay không. Ví dụ: máy chủ có thể lưu lại phản hồi vào bộ nhớ đệm nếu phản hồi không khớp với nội dung hiện đang được lưu vào bộ nhớ đệm. Phương thức này có thể trả về tài nguyên đã lưu vào bộ nhớ đệm nếu ETag khớp.

Khi một điểm cuối mục tiêu gửi phản hồi lại cho Edge bằng một ETag, Edge sẽ lưu ETag vào bộ nhớ đệm cùng với phản hồi.

Bạn có thể đọc thêm về Thẻ thực thể trong phần Tham số giao thức trong thông số kỹ thuật HTTP/1.1.

Nếu khớp

Với tiêu đề của yêu cầu If-Match, một thực thể đã lưu vào bộ nhớ đệm sẽ được lưu vào bộ nhớ đệm nếu ETag trong tiêu đề khớp với ETag đã lưu vào bộ nhớ đệm. Mọi yêu cầu khác ngoài GET mà chỉ định tiêu đề If-Match sẽ được chuyển tới máy chủ gốc để đảm bảo mọi phương tiện lưu vào bộ nhớ đệm của nguồn gốc đều có cơ hội xử lý yêu cầu.

Bạn có thể đọc thêm về If-Match trong phần Định nghĩa trường tiêu đề trong phần thông số kỹ thuật HTTP/1.1.

Nếu Edge nhận được một yêu cầu GET đến từ ứng dụng có tiêu đề If-Match:

Nếu Sau đó
Tiêu đề If-Match chỉ định một hoặc nhiều ETag
  1. Apigee Edge truy xuất mọi mục bộ nhớ đệm chưa hết hạn cho tài nguyên được chỉ định và so sánh mọi ETag mạnh trên các mục nhập đã lưu vào bộ nhớ đệm với các mục được chỉ định trong tiêu đề If-Match.
  2. Nếu tìm thấy kết quả trùng khớp, mục nhập trong bộ nhớ đệm sẽ được trả về.
  3. Nếu không, yêu cầu sẽ được chuyển đến máy chủ gốc.
Tiêu đề If-Match chỉ định "*" Yêu cầu được chuyển đến máy chủ gốc để đảm bảo rằng mọi phương tiện lưu vào bộ nhớ đệm của nguồn gốc đều có cơ hội xử lý yêu cầu
Đã tìm thấy một mục trong bộ nhớ đệm có cùng URI yêu cầu, nhưng chỉ chứa ETag yếu Máy chủ gốc phải xác thực lại mục nhập trước khi được trả về ứng dụng khách
Thẻ ETag đến từ máy chủ gốc. ETag được trả về không thay đổi cho ứng dụng

Nếu-Không-Khớp

Với tiêu đề If-None-Match, một thực thể đã lưu vào bộ nhớ đệm là thực thể hiện tại nếu ETag trong tiêu đề không khớp với ETag đã lưu vào bộ nhớ đệm. Các yêu cầu không phải là GET có chứa tiêu đề này sẽ được chuyển đến máy chủ gốc.

Nếu Edge nhận được yêu cầu GET đến có tiêu đề này:

Nếu Sau đó
Tiêu đề If-None-Match chỉ định một hoặc nhiều ETag
  1. Apigee Edge truy xuất mọi mục bộ nhớ đệm chưa hết hạn cho URI được chỉ định và so sánh mọi ETag mạnh trên các mục nhập đã lưu vào bộ nhớ đệm với các mục được chỉ định trong tiêu đề If-None-Match.
  2. Nếu tìm thấy kết quả trùng khớp, Edge sẽ trả về trạng thái 304 Không được sửa đổi. Nếu không tìm thấy kết quả trùng khớp, Edge sẽ chuyển yêu cầu đến máy chủ gốc.

Tiêu đề If-None-Match chỉ định "*" và một mục nhập đã lưu vào bộ nhớ đệm chưa hết hạn cho URI được yêu cầu

Edge trả về trạng thái 304 Không được sửa đổi
Đã tìm thấy một mục trong bộ nhớ đệm có cùng URI yêu cầu nhưng chỉ chứa ETag yếu Máy chủ gốc phải xác thực lại mục nhập trước khi Edge trả về ứng dụng
Edge nhận được ETag từ máy chủ gốc ETag được trả về không thay đổi cho ứng dụng

Nếu được sửa đổi từ ngày

Nếu Apigee nhận được tiêu đề If-Modified-Since trong yêu cầu GET, thì tiêu đề này sẽ được chuyển tới máy chủ gốc, ngay cả khi có một mục nhập bộ nhớ đệm hợp lệ.

Việc này đảm bảo rằng mọi bản cập nhật cho một tài nguyên không đáp ứng được Apigee sẽ được tính đến. Nếu máy chủ gốc trả về một thực thể mới, thì Edge sẽ thay thế mục nhập bộ nhớ đệm hiện có bằng giá trị mới. Nếu máy chủ trả về trạng thái 304 Không được sửa đổi, Edge sẽ trả về giá trị phản hồi nếu tiêu đề Last-Modified của phản hồi được lưu vào bộ nhớ đệm cho biết chưa thay đổi.

Chấp nhận-Mã hoá

Khi một yêu cầu đến bao gồm tiêu đề Accept-Encoding với các giá trị của gzip, deflate hoặc compress, máy chủ gốc sẽ phản hồi bằng dữ liệu nén. Khi các yêu cầu tiếp theo đến mà không có tiêu đề Accept-Encoding, các yêu cầu đó sẽ đợi một phản hồi không nén. Cơ chế lưu phản hồi vào bộ nhớ đệm của Apigee có thể gửi cả phản hồi nén và không nén tuỳ thuộc vào các tiêu đề đến mà không cần quay lại máy chủ gốc.

Bạn có thể thêm các giá trị tiêu đề Chấp nhận vào khoá bộ nhớ đệm để làm cho các khoá này trở nên ý nghĩa hơn đối với từng mục được lưu vào bộ nhớ đệm. Để biết thêm thông tin chi tiết, hãy xem phần "Định cấu hình khoá bộ nhớ đệm" trong Chính sách bộ nhớ đệm của phản hồi.