Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
Lưu dữ liệu vào bộ nhớ đệm từ một tài nguyên phụ trợ, giảm số lượng yêu cầu vào tài nguyên. Khi các ứng dụng gửi yêu cầu đến cùng một URI, bạn có thể sử dụng chính sách này để trả về các phản hồi được lưu vào bộ nhớ đệm thay vì chuyển tiếp những yêu cầu đó đến máy chủ phụ trợ. Chính sách ResponseCache có thể cải thiện hiệu suất của API bằng cách giảm độ trễ và lưu lượng truy cập mạng.
Bạn có thể sẽ thấy ResponseCache hữu ích nhất khi dữ liệu phụ trợ mà API của bạn sử dụng chỉ được cập nhật định kỳ. Ví dụ: giả sử bạn có một API cho thấy dữ liệu báo cáo thời tiết chỉ được làm mới mỗi 10 phút. Bằng cách sử dụng ResponseCache để trả về các phản hồi được lưu vào bộ nhớ đệm giữa các lần làm mới, bạn có thể giảm số lượng yêu cầu gửi đến phần phụ trợ. Điều này cũng làm giảm số bước mạng.
Để lưu vào bộ nhớ đệm ngắn hạn cho mục đích chung, hãy cân nhắc sử dụng chính sách Điền vào bộ nhớ đệm. Chính sách đó được sử dụng cùng với chính sách Tra cứu bộ nhớ đệm (để đọc các mục nhập bộ nhớ đệm) và Chính sách Vô hiệu hoá bộ nhớ đệm (để vô hiệu hoá các mục nhập).
Xem video này để biết chính sách Bộ nhớ đệm phản hồi.
Mẫu
Bộ nhớ đệm 10 phút
Mẫu này cho biết cách lưu giữ các phản hồi được lưu vào bộ nhớ đệm trong 10 phút.
Giả sử bạn có một API tại URL sau:
http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778
Bạn đang sử dụng tham số truy vấn w
làm khoá bộ nhớ đệm. Apigee Edge kiểm tra giá trị của tham số truy vấn w
bất cứ khi nào nhận được yêu cầu. Nếu có một phản hồi hợp lệ (nghĩa là chưa hết hạn) trong bộ nhớ đệm, thì thông báo phản hồi đã lưu vào bộ nhớ đệm sẽ được trả về ứng dụng yêu cầu.
Bây giờ, hãy tưởng tượng rằng bạn có chính sách ResponseCache được định cấu hình như sau.
<ResponseCache name="ResponseCache"> <CacheKey> <KeyFragment ref="request.queryparam.w" /> </CacheKey> <ExpirySettings> <TimeoutInSeconds>600</TimeoutInSeconds> </ExpirySettings> </ResponseCache>
Lần đầu tiên proxy API nhận được thông báo yêu cầu cho URL sau, phản hồi này sẽ được lưu vào bộ nhớ đệm. Ở yêu cầu thứ hai trong vòng 10 phút, quá trình tra cứu bộ nhớ đệm sẽ diễn ra – phản hồi đã lưu vào bộ nhớ đệm được trả về cho ứng dụng mà không có yêu cầu nào được chuyển tiếp đến dịch vụ phụ trợ.
http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778
Bỏ qua tra cứu bộ nhớ đệm
Ví dụ sau đây cho thấy cách bỏ qua hoạt động tra cứu bộ nhớ đệm và làm mới bộ nhớ đệm. Ngoài ra, xem video này về cách sử dụng SkipCacheLookup.
Điều kiện SkipCacheLookup không bắt buộc (nếu đã định cấu hình) sẽ được đánh giá trong đường dẫn yêu cầu. Nếu điều kiện được đánh giá là true (đúng), thì hoạt động tra cứu bộ nhớ đệm sẽ bị bỏ qua và bộ nhớ đệm sẽ được làm mới.
Một trường hợp sử dụng phổ biến là làm mới bộ nhớ đệm có điều kiện là một điều kiện xác định một tiêu đề HTTP cụ thể có thể làm cho điều kiện được đánh giá là đúng. Một ứng dụng khách theo tập lệnh có thể được định cấu hình để gửi định kỳ một yêu cầu có tiêu đề HTTP phù hợp, rõ ràng khiến bộ nhớ đệm phản hồi làm mới.
Ví dụ: hãy tưởng tượng một lệnh gọi đến API tại URL sau đây:
'http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778' -H "bypass-cache:true"
Bây giờ, hãy tưởng tượng chính sách ResponseCache sau đây được định cấu hình trên proxy đó. Xin lưu ý rằng điều kiện bỏ qua bộ nhớ đệm được đặt thành true (đúng).
<ResponseCache name="ResponseCache"> <CacheKey> <KeyFragment ref="request.queryparam.w" /> </CacheKey> <!-- Explicitly refresh the cached response --> <SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup> <ExpirySettings> <TimeoutInSeconds>600</TimeoutInSeconds> </ExpirySettings> </ResponseCache>
Để biết thêm thông tin về các điều kiện, hãy xem bài viết Biến và điều kiện luồng.
Tham chiếu phần tử
Tham chiếu phần tử mô tả các phần tử và thuộc tính của chính sách.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1"> <DisplayName>Response Cache 1</DisplayName> <Properties/> <CacheKey> <Prefix/> <KeyFragment ref="request.uri" /> </CacheKey> <Scope>Exclusive</Scope> <ExpirySettings> <ExpiryDate/> <TimeOfDay/> <TimeoutInSeconds ref="flow.variable.here">300</TimeoutInSeconds> </ExpirySettings> <CacheResource>cache_to_use</CacheResource> <CacheLookupTimeoutInSeconds/> <ExcludeErrorResponse/> <SkipCacheLookup/> <SkipCachePopulation/> <UseAcceptHeader/> <UseResponseCacheHeaders/> </ResponseCache>
Thuộc tính <ResponseCache>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
Bảng sau đây mô tả các thuộc tính chung cho tất cả phần tử mẹ của chính sách:
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
name |
Tên nội bộ của chính sách. Giá trị của thuộc tính Nếu muốn, bạn có thể sử dụng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành Đặt thành |
false | Không bắt buộc |
enabled |
Đặt thành Đặt thành |
đúng | Không bắt buộc |
async |
Thuộc tính này không được dùng nữa. |
false | Không được dùng nữa |
Phần tử <DisplayName>
Sử dụng cùng với thuộc tính name
để gắn nhãn cho chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên khác theo ngôn ngữ tự nhiên.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, thì giá trị thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
Phần tử <CacheKey>
Định cấu hình một con trỏ duy nhất đến một phần dữ liệu được lưu trữ trong bộ nhớ đệm.
Khoá bộ nhớ đệm được giới hạn kích thước 2 KB.
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Bắt buộc |
Loại: |
Không áp dụng |
<CacheKey>
tạo tên của từng phần dữ liệu được lưu trữ trong bộ nhớ đệm.
Khoá thường được thiết lập bằng cách sử dụng giá trị từ tiêu đề thực thể hoặc tham số truy vấn. Trong những trường hợp đó, bạn sẽ để thuộc tính tham chiếu của phần tử chỉ định một biến chứa giá trị khoá.
Trong thời gian chạy, các giá trị <KeyFragment>
được thêm vào trước giá trị phần tử <Scope>
hoặc giá trị <Prefix>
. Ví dụ: các đoạn mã sau đây dẫn đến khoá bộ nhớ đệm của UserToken__apiAccessToken__
<value_of_client_id>:
<CacheKey> <Prefix>UserToken</Prefix> <KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" /> </CacheKey>
Bạn sẽ sử dụng phần tử <CacheKey>
cùng với <Prefix>
và <Scope>
. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.
Phần tử <CacheLookupTimeoutInSeconds>
Chỉ định số giây mà sau đó một lần tra cứu bộ nhớ đệm không thành công sẽ bị coi là thiếu bộ nhớ đệm. Nếu điều này xảy ra, quy trình sẽ tiếp tục theo đường dẫn bỏ lỡ bộ nhớ đệm.
<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>
Mặc định: |
30 |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Số nguyên |
Phần tử <CacheResource>
Chỉ định bộ nhớ đệm nơi lưu trữ thư. Bỏ qua phần tử này để sử dụng bộ nhớ đệm dùng chung đi kèm. Bạn nên chỉ định CacheResource theo tên nếu muốn xoá các mục nhập có trong bộ nhớ đệm về mặt quản trị. Để biết thêm thông tin về nội dung này, hãy xem Bộ nhớ đệm.
<CacheResource>cache_to_use</CacheResource>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Để biết thêm thông tin về cách định cấu hình bộ nhớ đệm, hãy xem bài viết Tạo và chỉnh sửa bộ nhớ đệm của môi trường.
Phần tử <CacheKey>/<KeyFragment>
Chỉ định một giá trị cần đưa vào khoá bộ nhớ đệm, tạo một không gian tên để so khớp các yêu cầu với phản hồi đã lưu vào bộ nhớ đệm.
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Không áp dụng |
Đây có thể là khoá (tên tĩnh mà bạn cung cấp) hoặc giá trị (tập hợp mục động bằng cách tham chiếu đến một biến). Tất cả mảnh đã chỉ định kết hợp (cộng với tiền tố) được nối với nhau để tạo khoá bộ nhớ đệm.
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
Bạn sẽ sử dụng phần tử <KeyFragment>
cùng với <Prefix>
và <Scope>
. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.
Thuộc tính
Thuộc tính | Loại | Mặc định | Bắt buộc | Nội dung mô tả |
---|---|---|---|---|
giới thiệu | string | Không |
Biến được dùng để nhận giá trị. Bạn không nên sử dụng nếu phần tử này chứa một giá trị cố định. |
Phần tử <CacheKey>/<Prefix>
Chỉ định một giá trị để dùng làm tiền tố khoá bộ nhớ đệm.
<Prefix>prefix_string</Prefix>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Hãy sử dụng giá trị này thay vì <Scope>
khi bạn muốn chỉ định giá trị của riêng mình thay vì giá trị liệt kê <Scope>
. Nếu được xác định, <Prefix>
sẽ thêm giá trị khoá bộ nhớ đệm cho các mục được ghi vào bộ nhớ đệm. Giá trị phần tử <Prefix>
ghi đè giá trị phần tử <Scope>
.
Bạn sẽ sử dụng phần tử <Prefix>
cùng với <CacheKey>
và <Scope>
. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.
Phần tử <ExcludeErrorResponse>
Hiện tại, theo mặc định, chính sách này sẽ lưu các phản hồi HTTP vào bộ nhớ đệm chứa bất kỳ mã Trạng thái nào. Điều đó có nghĩa là cả phản hồi thành công và phản hồi lỗi đều được lưu vào bộ nhớ đệm. Ví dụ: các phản hồi có cả mã trạng thái 2xx và 3xx sẽ được lưu vào bộ nhớ đệm theo mặc định.
Đặt phần tử này thành true
nếu bạn không muốn lưu các phản hồi mục tiêu có mã trạng thái HTTP vào bộ nhớ đệm; chỉ những phản hồi có mã trạng thái từ 200 đến 205 mới được lưu vào bộ nhớ đệm nếu phần tử này là true. Đây là các mã trạng thái HTTP duy nhất mà Edge tính là mã "thành công" và bạn không thể thay đổi mối liên kết này.
Để thảo luận về các mẫu Bộ nhớ đệm phản hồi mà trong đó phần tử này hữu ích, hãy xem bài đăng này trên cộng đồng.
Lưu ý: Trong bản phát hành sau này (sẽ được xác định sau), chế độ cài đặt mặc định của phần tử này sẽ thay đổi thành true. Xem Ghi chú phát hành API API để biết thông tin chi tiết.
<ExcludeErrorResponse>true</ExcludeErrorResponse>
Mặc định: |
false |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Boolean |
Phần tử <ExpirySettings>
Chỉ định thời điểm hết hạn một mục trong bộ nhớ đệm. Khi có, <TimeoutInSeconds>
sẽ ghi đè cả <TimeOfDay>
và <ExpiryDate>
.
<ExpirySettings> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> <ExpiryDate ref="date_variable">expiration_date</ExpiryDate> </ExpirySettings>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Bắt buộc |
Loại: |
Không áp dụng |
Phần tử <ExpirySettings>/<ExpiryDate>
Chỉ định ngày hết hạn cho một mục trong bộ nhớ đệm. Sử dụng biểu mẫu mm-dd-yyyy
.
Nếu có, thành phần đồng cấp của phần tử này, <TimeoutInSeconds>
, sẽ ghi đè <ExpiryDate>
.
<ExpirySettings> <ExpiryDate ref="{date_variable}">expiration_date</ExpiryDate> </ExpirySettings>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Thuộc tính
<ExpiryDate ref="" />
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
giới thiệu |
Biến được dùng để nhận giá trị. Bạn không nên sử dụng nếu phần tử này chứa một giá trị cố định. |
Không áp dụng | Không bắt buộc | Chuỗi |
Phần tử <ExpirySettings>/<TimeOfDay>
Thời gian trong ngày mà mục nhập bộ nhớ đệm sẽ hết hạn. Sử dụng biểu mẫu hh:mm:ss
.
Nếu có, thành phần đồng cấp của phần tử này, <TimeoutInSeconds>
, sẽ ghi đè <TimeOfDay>
.
Nhập thời gian trong ngày theo định dạng HH:mm:ss, trong đó HH thể hiện giờ trên đồng hồ 24 giờ. Ví dụ: 14:30:00 cho 2:30 chiều.
Đối với thời gian trong ngày, ngôn ngữ và múi giờ mặc định sẽ thay đổi tuỳ thuộc vào nơi mã đang chạy (không biết được khi định cấu hình chính sách này). Để biết thông tin về cách định cấu hình ngôn ngữ, hãy xem bài viết Tạo và chỉnh sửa bộ nhớ đệm của môi trường.
<ExpirySettings> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> </ExpirySettings>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Thuộc tính
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
giới thiệu | Biến có giá trị thời gian hết hạn. | Không áp dụng | Không bắt buộc | Chuỗi |
Phần tử <ExpirySettings>/<TimeoutInSec>
Số giây sau đó mục nhập trong bộ nhớ đệm sẽ hết hạn.
Phần tử <ExpirySettings>/<TimeoutInSeconds>
Số giây sau đó mục nhập trong bộ nhớ đệm sẽ hết hạn. Khi có, phần tử này sẽ ghi đè các thành phần đồng cấp là <TimeOfDay>
và <ExpiryDate>
.
<ExpirySettings> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> </ExpirySettings>
Lưu ý: Cung cấp giá trị thời gian chờ mặc định để sử dụng nếu tham chiếu không nhận được giá trị từ duration_variable
.
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Thuộc tính
Thuộc tính | Nội dung mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
giới thiệu | Biến có giá trị thời gian chờ. |
Không áp dụng
|
Không bắt buộc | Chuỗi |
Phần tử <Scope>
Thuật toán liệt kê dùng để tạo tiền tố cho khoá bộ nhớ đệm khi phần tử <Prefix>
không được cung cấp trong phần tử <CacheKey>
.
<Scope>scope_enumeration</Scope>
Mặc định: |
"Độc quyền" |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Chế độ cài đặt <Scope>
xác định khoá bộ nhớ đệm được thêm vào trước theo giá trị <Scope>
. Ví dụ: khoá bộ nhớ đệm sẽ có dạng như sau khi phạm vi được đặt thành Exclusive
: orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [
serializedCacheKey ].
Nếu có phần tử <Prefix>
trong <CacheKey>
, phần tử này sẽ thay thế giá trị phần tử <Scope>
. Giá trị hợp lệ bao gồm những giá trị liệt kê dưới đây.
Bạn sẽ sử dụng phần tử <Scope>
cùng với <CacheKey>
và <Prefix>
. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.
Giá trị được chấp nhận
Giá trị phạm vi | Nội dung mô tả |
---|---|
Global |
Khoá bộ nhớ đệm được dùng chung trên tất cả các proxy API được triển khai trong môi trường. Khoá bộ nhớ đệm được thêm vào trước dạng orgName __ envName __. Nếu bạn xác định một mục nhập |
Application |
Tên proxy API được dùng làm tiền tố. Khoá bộ nhớ đệm được thêm vào trước dưới dạng orgName__envName__apiProxyName. |
Proxy |
Cấu hình ProxyEndpoint được dùng làm tiền tố. Khoá bộ nhớ đệm được thêm vào trước trong dạng orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName . |
Target |
Cấu hình TargetEndpoint được dùng làm tiền tố. Khoá bộ nhớ đệm được thêm vào trước trong biểu mẫu orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName . |
Exclusive |
Mặc định. Đây là chỉ số cụ thể nhất và do đó có nguy cơ tối thiểu xảy ra xung đột không gian tên trong một bộ nhớ đệm nhất định. Tiền tố là một trong hai dạng:
Khoá bộ nhớ đệm được thêm vào trước dạng orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName Ví dụ: chuỗi đầy đủ có thể có dạng như sau: apifactory__test__weatherapi__16__default__apiAccessToken. |
Phần tử <SkipCacheLookup>
Xác định một biểu thức mà nếu có giá trị true trong thời gian chạy, thì biểu thức này sẽ chỉ định rằng nên bỏ qua quá trình tra cứu bộ nhớ đệm và làm mới bộ nhớ đệm. Ngoài ra, hãy xem video này về cách sử dụng SkipCacheLookup.
<SkipCacheLookup>variable_condition_expression</SkipCacheLookup>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Từ ví dụ sau, nếu biến bỏ qua bộ nhớ đệm được đặt thành true trong tiêu đề đến, thì quá trình tra cứu bộ nhớ đệm sẽ bị bỏ qua và bộ nhớ đệm sẽ được làm mới.
<SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
Phần tử <SkipCachePopulation>
Xác định một biểu thức mà nếu có giá trị true trong thời gian chạy, thì biểu thức này sẽ chỉ định rằng cần bỏ qua thao tác ghi vào bộ nhớ đệm. Ngoài ra, hãy xem video này về cách sử dụng SkipCachePopulation.
<SkipCachePopulation>variable_condition_expression</SkipCachePopulation>
Mặc định: |
Không áp dụng |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Chuỗi |
Ví dụ: thao tác sau đây sẽ bỏ qua quá trình ghi vào bộ nhớ đệm nếu mã trạng thái phản hồi là 400 trở lên:
<SkipCachePopulation>response.status.code >= 400</SkipCachePopulation>
Phần tử <UseAcceptHeader>
Đặt thành true
để nối thêm khoá bộ nhớ đệm của mục nhập bộ nhớ đệm phản hồi cùng các giá trị từ tiêu đề Chấp nhận của phản hồi.
Edge sử dụng các tiêu đề yêu cầu Accept
, Accept-Encoding
, Accept-Language
và Accept-Charset
khi tính toán khoá bộ nhớ đệm. Phương pháp này ngăn khách hàng nhận được loại nội dung đa phương tiện mà họ không yêu cầu.
Ví dụ: hãy xem xét liệu hai yêu cầu có xuất phát từ cùng một URL hay không, trong đó yêu cầu đầu tiên chấp nhận tệp gzip còn yêu cầu thứ hai thì không. Yêu cầu đầu tiên sẽ được lưu vào bộ nhớ đệm và mục nhập đã lưu vào bộ nhớ đệm (có thể) sẽ là một phản hồi được nén. Yêu cầu thứ hai sẽ đọc giá trị đã lưu trong bộ nhớ đệm và sau đó có thể trả về một mục đã nén cho ứng dụng khách không thể đọc tệp gzip.
Xem bài viết Định cấu hình khoá bộ nhớ đệm để biết thêm thông tin.
<UseAcceptHeader>false</UseAcceptHeader>
Mặc định: |
false |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Boolean |
Phần tử <UseResponseCacheHeaders>
Đặt thành true
để các tiêu đề phản hồi HTTP được xem xét khi đặt "thời gian tồn tại" (TTL) của phản hồi trong bộ nhớ đệm. Khi điều này đúng, Edge sẽ xem xét giá trị của các tiêu đề phản hồi sau đây, so sánh các giá trị với các giá trị do <ExpirySettings>
thiết lập khi thiết lập thời gian tồn tại:
Cache-Control s-maxage
Cache-Control max-age
Expires
Hãy xem bài viết Đặt thời gian hết hạn của mục bộ nhớ đệm để biết thêm thông tin chi tiết.
<UseResponseCacheHeaders>false</UseResponseCacheHeaders>
Mặc định: |
false |
Sự hiện diện: |
Không bắt buộc |
Loại: |
Boolean |
Lưu ý về cách sử dụng
Kích thước tối đa của mỗi đối tượng được lưu vào bộ nhớ đệm là 256 KB. (Để biết thông tin chi tiết về cách Edge xử lý bộ nhớ đệm, vui lòng xem phần Bộ nhớ đệm nội bộ.)
Thông qua cấu hình trong chính sách ResponseCache, bạn có thể yêu cầu Edge bao gồm các tiêu đề phản hồi HTTP trong quá trình đặt thời hạn của mục nhập bộ nhớ đệm và khoá bộ nhớ đệm. Phần này mô tả rằng bạn có thể sử dụng chính sách có tiêu đề để quản lý thời gian hết hạn của bộ nhớ đệm và khoá bộ nhớ đệm.
Để biết thêm về cách Edge xử lý các tiêu đề phản hồi bằng chính sách ResponseCache, hãy xem bài viết Hỗ trợ các tiêu đề phản hồi HTTP.
Đặt thời gian hết hạn mục bộ nhớ đệm
Tương tự như với Chính sách điền bộ nhớ đệm, bạn có thể đặt ngày hết hạn của một mục bộ nhớ đệm phản hồi (thời gian hoạt động của mục đó) bằng cách sử dụng phần tử <ExpirySettings>
. Trong chính sách ResponseCache, bạn cũng có thể yêu cầu Edge xem xét các tiêu đề phản hồi khi có các tiêu đề này.
Để sử dụng tiêu đề phản hồi, bạn cần đặt giá trị phần tử <UseResponseCacheHeaders>
thành
true. Chế độ cài đặt đó khiến Edge xem xét các tiêu đề phản hồi, so sánh với giá trị do <ExpirySettings>
đặt, sau đó sử dụng giá trị thấp nhất trong hai tiêu đề. Khi xem xét tiêu đề phản hồi, Edge sẽ chọn giá trị có sẵn như mô tả sau đây:
Ví dụ: hãy tưởng tượng một phản hồi được lưu vào bộ nhớ đệm bằng các giá trị sau:
- Không có giá trị
Cache-Control s-maxage
- Giá trị
Cache-Control max-age
là 300 - Ngày
Expires
sau 3 ngày nữa - Giá trị
<ExpirySettings>
TimeoutInSeconds
là 600.
Trong trường hợp này, giá trị Cache-Control
max-age
sẽ được dùng cho TTL vì giá trị này thấp hơn giá trị <ExpirySettings>
và vì không có giá trị Cache-Control s-maxage
(được ưu tiên hơn max-age
).
Định cấu hình khoá bộ nhớ đệm
Tương tự như các chính sách bộ nhớ đệm cho mục đích chung như Điền chính sách bộ nhớ đệm, với ResponseCache, bạn sử dụng các phần tử <CacheKey>
và <Scope>
để định cấu hình việc tạo khoá bộ nhớ đệm cho các mục trong bộ nhớ đệm. Với ResponseCache, bạn cũng có thể làm cho các khoá bộ nhớ đệm trở nên ý nghĩa hơn bằng cách thêm các tiêu đề Accept (Chấp nhận) của phản hồi vào các giá trị khoá.
Để biết thông tin chung về cách định cấu hình khoá bộ nhớ đệm, hãy xem bài viết Làm việc với khoá bộ nhớ đệm. Để biết thông tin về cách sử dụng tiêu đề Chấp nhận, hãy xem <UseAcceptHeader>
.
Giới thiệu về tính năng mã hoá bộ nhớ đệm
Edge for Public Cloud: Bộ nhớ đệm chỉ được mã hoá trong các tổ chức hỗ trợ PCI và HIPAA. Mã hoá cho các tổ chức đó được định cấu hình trong quá trình cấp phép tổ chức.
Biến luồng
Các biến Luồng (Flow) định sẵn sau đây được điền sẵn khi thực thi chính sách ResponseCache. Để biết thêm thông tin về biến Flow, hãy xem bài viết Tài liệu tham khảo về biến.
Biến | Loại | Quyền | Nội dung mô tả |
---|---|---|---|
responsecache.{policy_name}.cachename |
Chuỗi | Chỉ có thể đọc | Trả về bộ nhớ đệm dùng trong chính sách |
responsecache.{policy_name}.cachekey |
Chuỗi | Chỉ có thể đọc | Trả về khoá đã dùng |
responsecache.{policy_name}.cachehit |
Boolean | Chỉ có thể đọc | Đúng nếu thực thi chính sách thành công |
responsecache.{policy_name}.invalidentry |
Boolean | Chỉ có thể đọc | Đúng nếu mục nhập bộ nhớ đệm không hợp lệ |
Mã lỗi
Phần này mô tả các thông báo lỗi và biến luồng được thiết lập khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng mà bạn cần biết nếu đang phát triển các quy tắc lỗi cho một proxy. Để tìm hiểu thêm, hãy xem Những điều bạn cần biết về lỗi chính sách và Xử lý lỗi.
Tiền tố mã lỗi
Không áp dụng
Lỗi thời gian chạy
Chính sách này không gửi bất kỳ lỗi thời gian chạy nào.
Lỗi triển khai
Những lỗi này có thể xảy ra khi bạn triển khai proxy chứa chính sách này.
Tên lỗi | Nguyên nhân | Khắc phục |
---|---|---|
InvalidTimeout |
Nếu bạn đặt phần tử <CacheLookupTimeoutInSeconds> của chính sách ResponseCache thành số âm, thì sẽ không triển khai được proxy API. |
build |
InvalidCacheResourceReference |
Lỗi này xảy ra nếu phần tử <CacheResource> trong chính sách ResponseCache được đặt thành một tên không tồn tại trong môi trường mà proxy API đang được triển khai. |
build |
ResponseCacheStepAttachmentNotAllowedReq |
Lỗi này xảy ra nếu cùng một chính sách ResponseCache được đính kèm vào nhiều đường dẫn yêu cầu trong bất kỳ luồng nào của một proxy API. | build |
ResponseCacheStepAttachmentNotAllowedResp |
Lỗi này xảy ra nếu cùng một chính sách ResponseCache được đính kèm vào nhiều đường dẫn phản hồi trong bất kỳ luồng nào của một proxy API. | build |
InvalidMessagePatternForErrorCode |
Lỗi này xảy ra nếu phần tử <SkipCacheLookup> hoặc <SkipCachePopulation> trong chính sách ResponseCache chứa điều kiện không hợp lệ. |
build |
CacheNotFound |
Lỗi này xảy ra nếu bộ nhớ đệm cụ thể được đề cập trong thông báo lỗi chưa được tạo trên một thành phần cụ thể của Trình xử lý thông báo. | build |
Biến lỗi
Không áp dụng
Ví dụ về phản hồi lỗi
Không áp dụng
Giản đồ
Mỗi loại chính sách được xác định bằng một giản đồ XML (.xsd
). Giản đồ chính sách có sẵn trên GitHub để bạn tham khảo.