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 của một tài nguyên phụ trợ vào bộ nhớ đệm, giúp giảm số lượng yêu cầu đối với tài nguyên. Dưới dạng ứng dụng đưa ra yêu cầu cho 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 các yêu cầu đó đến máy chủ phụ trợ. Chính sách Bộ nhớ đệm phản hồi có thể cải thiện thông qua việc 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 được cập nhật định kỳ. Ví dụ: giả sử bạn có một API hiển thị dữ liệu báo cáo thời tiết chỉ làm mới 10 phút một lần. Sử dụng ResponseCache để trả về phản hồi được lưu vào bộ nhớ đệm giữa 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 giúp giảm số bước nhảy mạng.
Nếu bạn muốn lưu vào bộ nhớ đệm trong thời gian ngắn nói chung, hãy cân nhắc sử dụng chính sách Điền bộ nhớ đệm. Chính sách này được dùng cùng với chính sách Bộ nhớ đệm tra cứu (để đọc các mục trong bộ nhớ đệm) và Vô hiệu hoá chính sách bộ nhớ đệm (đối với các mục nhập làm mất hiệu lực).
Hãy xem video này để biết giới thiệu về chính sách Bộ nhớ đệm phản hồi.
Mẫu
Bộ nhớ đệm 10 phút
Mẫu này hướng dẫn cách lưu giữ các phản hồi đã lưu vào bộ nhớ đệm trong 10 phút.
Tưởng tượng rằng 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
của tham số truy vấn w
bất cứ khi nào nhận được yêu cầu. Nếu một giá trị hợp lệ (nếu
là phản hồi chưa hết hạn) có trong bộ nhớ đệm, thì thông báo phản hồi đã lưu vào bộ nhớ đệm sẽ
đã trả về ứng dụng khách 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>
Vào lần đầu tiên proxy API nhận được thông báo yêu cầu cho URL sau, và phản hồi đã được lưu vào bộ nhớ đệm. Với yêu cầu thứ hai trong vòng 10 phút, tra cứu bộ nhớ đệm xảy ra -- phản hồi đã lưu vào bộ nhớ đệm sẽ đượ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 minh hoạ cách bỏ qua tra cứu bộ nhớ đệm và đặt bộ nhớ đệm đã làm mới. Xem thêm video này về việc 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, thì quá trình tra cứu bộ nhớ đệm sẽ bị bỏ qua và bộ nhớ đệm sẽ đã làm mới.
Cách sử dụng phổ biến của làm mới bộ nhớ đệm có điều kiện là một điều kiện xác định một HTTP cụ thể tiêu đề làm cho điều kiện được đánh giá là true. Một ứng dụng theo tập lệnh có thể được định cấu hình để gửi yêu cầu định kỳ với tiêu đề HTTP thích hợp, một cách rõ ràng làm cho bộ nhớ đệm phản hồi làm mới.
Ví dụ: giả sử một lệnh gọi đến một API tại URL sau:
'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 đó. Lưu ý rằng điều kiện bỏ qua bộ nhớ đệm được đặt thành true.
<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 các bài viết Biến luồng và điều kiện.
Tham chiếu phần tử
Tài liệu tham khảo phần tử mô tả các thành phần 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>
<ResponseCache> thuộc tính
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
Bảng sau đây mô tả những thuộc tính chung cho tất cả phần tử mẹ của chính sách:
Thuộc tính | 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 (Không bắt buộc) Bạn có thể 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 |
Hãy đặ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 |
<DisplayName> phần tử
Hãy sử dụng cùng với thuộc tính name
để gắn nhãn chính sách trong phần
trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
<CacheKey> phần tử
Đị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ó kích thước giới hạn là 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á này thường được thiết lập bằ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
có thuộc tính ref của phần tử chỉ định một biến chứa khóa-giá trị.
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 kết quả sau trong 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ử 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.
<CacheLookupTimeoutInSeconds> phần tử
Chỉ định số giây mà sau đó một lần tra cứu bộ nhớ đệm không thành công sẽ được coi là một thiếu bộ nhớ đệm. Nếu điều này xảy ra, luồng sẽ tiếp tục dọ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 |
<CacheResource> phần tử
Chỉ định bộ nhớ đệm nơi lưu trữ thông báo. Hãy bỏ qua phần tử này để sử dụng bộ nhớ đệm dùng chung. Bạn nên chỉ định CacheResource theo tên nếu bạn muốn có thể xoá về mặt quản trị các mục nhập trong bộ nhớ đệm. Để biết thêm thông tin về nội dung này, hãy xem bài viết 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 Tạo và chỉnh sửa môi trường lưu vào bộ nhớ đệm.
<CacheKey>/<KeyFragment> phần tử
Chỉ định một giá trị sẽ được đưa vào khoá bộ nhớ đệm, tạo không gian tên để so khớp đối với các phản hồi được 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à một khoá (tên tĩnh mà bạn cung cấp) hoặc một giá trị (một mục nhập động được đặt bởi tham chiếu đến một biến). Tất cả các mảnh được chỉ định kết hợp (cùng với tiền tố) đều được nối với tạo khoá bộ nhớ đệm.
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
Bạn 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 | Mô tả |
---|---|---|---|---|
tham chiếu | string | Không |
Biến để nhận giá trị. Không nên sử dụng nếu phần tử này chứa một giá trị cố định. |
<CacheKey>/<Prefix> phần tử
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 |
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ị được liệt kê là <Scope>
. Nếu được xác định,
<Prefix>
thêm giá trị khoá bộ nhớ đệm cho các mục nhập được ghi vào bộ nhớ đệm. Đáp
Giá trị phần tử <Prefix>
ghi đè phần tử <Scope>
giá trị.
Bạn 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.
<ExcludeErrorResponse> phần tử
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 với bất kỳ khả năng nào Mã trạng thái. Đ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âu trả lời có cả mã trạng thái 2xx và 3xx đều đượ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 mục tiêu vào bộ nhớ đệm
phản hồi có mã trạng thái lỗi HTTP; chỉ những phản hồi có mã trạng thái từ 200 đến 205 sẽ được
được lưu vào bộ nhớ đệm nếu phần tử này là đúng. Đây là những mã trạng thái HTTP duy nhất mà Edge tính là
"thành công" và bạn không thể thay đổi sự liên kết này.
Để thảo luận về các mẫu Bộ nhớ đệm cho câu trả lời mà phần tử này hữu ích, hãy xem bài đăng này trên thẻ Cộng đồng.
Lưu ý: Trong bản phát hành trong tương lai (sẽ được xác định), chế độ cài đặt mặc định của chế độ này sẽ thay đổi thành true. Xem Apigee Ghi chú phát hành để 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 |
<ExpirySettings> phần tử
Chỉ định thời điểm một mục trong bộ nhớ đệm hết hạn. Khi có, <TimeoutInSeconds>
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 |
<ExpirySettings>/<ExpiryDate> phần tử
Chỉ định ngày hết hạn của một mục trong bộ nhớ đệm. Sử dụng biểu mẫu mm-dd-yyyy
.
Khi 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 | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tham chiếu |
Biến để nhận giá trị. 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 |
<ExpirySettings>/<TimeOfDay> phần tử
Thời điểm trong ngày mà một mục trong bộ nhớ đệm sẽ hết hạn. Sử dụng biểu mẫu hh:mm:ss
.
Khi 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ờ. Cho ví dụ như 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 vị trí mã đang chạy (bạn không thể biết được khi định cấu hình chính sách). Để biết thông tin về cách định cấu hình ngôn ngữ, hãy xem 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 | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tham chiế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 |
<ExpirySettings>/<TimeoutInSec> phần tử
Số giây mà sau đó một mục nhập trong bộ nhớ đệm sẽ hết hạn.
<ExpirySettings>/<TimeoutInSeconds> phần tử
Số giây mà sau đó một mục nhập trong bộ nhớ đệm sẽ hết hạn. Nếu có, phần tử này
ghi đè các thành phần đồng cấp của nó, <TimeOfDay>
và <ExpiryDate>
.
<ExpirySettings> <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds> </ExpirySettings>
Lưu ý: Hãy cung cấp giá trị thời gian chờ mặc định để sử dụng nếu tài liệ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 | Mô tả | Mặc định | Sự hiện diện | Loại |
---|---|---|---|---|
tham chiếu | Biến có giá trị thời gian chờ. |
Không áp dụng
|
Không bắt buộc | Chuỗi |
<Scope> phần tử
Phương thức liệt kê dùng để tạo tiền tố cho khoá bộ nhớ đệm khi <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ó một phần tử <Prefix>
trong <CacheKey>
, thì phần tử này
thay thế giá trị phần tử <Scope>
. Các giá trị hợp lệ bao gồm giá trị enum
bên dưới.
Bạn 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 | Mô tả |
---|---|
Global |
Khoá bộ nhớ đệm được dùng chung trên tất cả proxy API được triển khai trong môi trường. Khoá bộ nhớ đệm là 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ạ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 đầu biểu mẫu 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 đầu biểu mẫu orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName . |
Exclusive |
Mặc định. Đây là yếu tố cụ thể nhất và do đó thể hiện rủi ro tối thiểu về không gian tên các xung đột 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 đầu biểu mẫu orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName Ví dụ: toàn bộ chuỗi có thể có dạng như sau: apifactory__test__weatherapi__16__default__apiAccessToken. |
<SkipCacheLookup> phần tử
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 hoạt động tra cứu bộ nhớ đệm nên bỏ qua và bạn nên làm mới bộ nhớ đệm. Xem thêm bài viết này video về việc 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, tra cứu bộ nhớ đệm sẽ bị bỏ qua và bộ nhớ đệm được làm mới.
<SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
<SkipCachePopulation> phần tử
Xác định một biểu thức mà, nếu biểu thức này có giá trị true trong thời gian chạy, sẽ chỉ định rằng việc ghi vào bộ nhớ đệm sẽ được bỏ qua. Xem thêm bài viết này video về việc 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ụ: lệnh sau sẽ bỏ qua quá trình ghi bộ nhớ đệm nếu mã trạng thái phản hồi là 400 hoặc cao hơn:
<SkipCachePopulation>response.status.code >= 400</SkipCachePopulation>
<UseAcceptHeader> phần tử
Đặt thành true
để thêm khoá bộ nhớ đệm của mục nhập bộ nhớ đệm phản hồi với các giá trị từ
phản hồi Chấp nhận tiêu đề.
Edge sử dụng Accept
, Accept-Encoding
, Accept-Language
và tiêu đề của yêu cầu 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 nghe nhìn mà họ không yêu cầu.
Ví dụ: hãy cân nhắc xem hai yêu cầu có đến từ cùng một URL hay không, trong đó yêu cầu đầu tiên chấp nhận gzip và 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 được lưu vào bộ nhớ đệm sẽ (có thể) là một phản hồi được nén. Yêu cầu thứ hai sẽ đọc giá trị đã lưu vào bộ nhớ đệm và sau đó có thể trả về mục nhập được nén cho ứng dụng khách không thể đọc gzip.
Xem phần Đị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 |
<UseResponseCacheHeaders> phần tử
Đặt thành true
để xem xét tiêu đề phản hồi HTTP khi đặt "thời gian thành
trực tiếp" (TTL) của phản hồi trong bộ nhớ đệm. Khi điều này đúng, Edge sẽ xem xét các giá trị của
các tiêu đề phản hồi sau, so sánh các giá trị với các giá trị được đặt bởi
<ExpirySettings>
khi đặt thời gian phát trực tiếp:
Cache-Control s-maxage
Cache-Control max-age
Expires
Xem bài viết Đặt thời hạn của mục nhập bộ nhớ đệm để tìm hiểu thêm 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 cho 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, hãy xem 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 phản hồi HTTP tiêu đề để thiết lập thời hạn của mục nhập bộ nhớ đệm và khoá bộ nhớ đệm. Phần này mô tả bạn có thể sử dụng có tiêu đề để quản lý thời hạn bộ nhớ đệm và khoá bộ nhớ đệm.
Để biết thêm về cách Edge xử lý tiêu đề phản hồi bằng chính sách ResponseCache, hãy xem phần Hỗ trợ tiêu đề phản hồi HTTP.
Đặt thời gian hết hạn mục nhập bộ nhớ đệm
Như với mục Điền
chính sách bộ nhớ đệm, bạn có thể đặt thời hạn của một mục bộ nhớ đệm phản hồi (thời gian tồn tại) bằng cách sử dụng
Phần tử <ExpirySettings>
. Trong chính sách ResponseCache, bạn cũng có thể cài đặt Edge
xem xét tiêu đề phản hồi khi có.
Để sử dụng tiêu đề phản hồi, bạn đặt giá trị phần tử <UseResponseCacheHeaders>
thành
đúng. Chế độ cài đặt đó khiến Edge xem xét các tiêu đề phản hồi, so sánh các tiêu đề đó với giá trị đã đặt
muộn nhất vào <ExpirySettings>
, thì hãy sử dụng giá trị thấp nhất giữa hai giá trị này. Thời gian
xem xét các tiêu đề phản hồi, Edge sẽ chọn giá trị có sẵn như được mô tả trong
sau:
Ví dụ: giả sử một câu trả lời được lưu vào bộ nhớ đệm với các giá trị sau:
- Không có giá trị
Cache-Control s-maxage
- Giá trị
Cache-Control max-age
là 300 - Một ngày
Expires
trong 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 sử dụng cho
TTL vì giá trị này thấp hơn giá trị <ExpirySettings>
và vì có
không có giá trị Cache-Control s-maxage
(được ưu tiên hơn so với
max-age
).
Định cấu hình khoá bộ nhớ đệm
Theo các chính sách về bộ nhớ đệm dùng cho mục đích chung, chẳng hạn như Chính sách điền bộ nhớ đệm, trong đó
Bộ nhớ đệm phản hồi mà bạn 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 nhập trong bộ nhớ đệm. Với ResponseCache, bạn cũng có thể tạo các khoá bộ nhớ đệm
ý nghĩa hơn bằng cách thêm tiêu đề Chấp nhận phản hồi vào 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. Cho
thông tin về cách sử dụng tiêu đề Chấp nhận, 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 PCI – và tuân thủ HIPAA tổ chức. Tính năng mã hoá cho các tổ chức đó được định cấu hình trong quá trình tổ chức cấp phép.
Biến luồng
Hệ thống sẽ điền sẵn các biến Luồng được xác định trước sau đây khi thực thi chính sách Bộ nhớ đệm phản hồi. Để biết thêm thông tin về Biến luồng, hãy xem Tài liệu tham khảo về biến.
Biến | Loại | Quyền | 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á đã sử 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 để tham khảo
đều có trên GitHub.