Chính sách Bộ nhớ đệm phản hồi

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>

&lt;ResponseCache&gt; 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 name có thể chứa chữ cái, số, dấu cách, dấu gạch nối, dấu gạch dưới và dấu chấm. Giá trị này không được vượt quá 255 ký tự.

(Không bắt buộc) Bạn có thể dùng phần tử <DisplayName> để gắn nhãn 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 ngôn ngữ tự nhiên khác.

Không áp dụng Bắt buộc
continueOnError

Đặt thành false để trả về lỗi khi chính sách không thành công. Điều này là dự kiến đối với hầu hết các chính sách.

Đặt thành true để tiếp tục thực thi luồng ngay cả sau khi có chính sách không thành công.

false Không bắt buộc
enabled

Hãy đặt thành true để thực thi chính sách này.

Đặt thành false để tắt chính sách này. Chính sách này sẽ không được thực thi ngay cả khi luồng đó vẫn được liên kết với một luồng.

đú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

&lt;DisplayName&gt; 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 name của chính sách sẽ là đã sử dụng.

Sự hiện diện Không bắt buộc
Loại Chuỗi

&lt;CacheKey&gt; 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__&lt;value_of_client_id&gt;:

<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><Scope>. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.

&lt;CacheLookupTimeoutInSeconds&gt; 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

&lt;CacheResource&gt; 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.

&lt;CacheKey&gt;/&lt;KeyFragment&gt; 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><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.

&lt;CacheKey&gt;/&lt;Prefix&gt; 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><Scope>. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.

&lt;ExcludeErrorResponse&gt; 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

&lt;ExpirySettings&gt; 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><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

&lt;ExpirySettings&gt;/&lt;ExpiryDate&gt; 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

&lt;ExpirySettings&gt;/&lt;TimeOfDay&gt; 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

&lt;ExpirySettings&gt;/&lt;TimeoutInSec&gt; phần tử

Số giây mà sau đó một mục nhập trong bộ nhớ đệm sẽ hết hạn.

&lt;ExpirySettings&gt;/&lt;TimeoutInSeconds&gt; 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><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

&lt;Scope&gt; 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><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 <CacheKey> bằng phương thức <KeyFragment> apiAccessToken và một phạm vi <Global>, mỗi mục nhập được lưu trữ dưới dạng orgName__envName__apiAccessToken, theo sau là giá trị tuần tự của mã truy cập. Đối với proxy API được triển khai trong môi trường được gọi là "test" [kiểm thử] trong tổ chức có tên là 'apifactory', mã thông báo truy cập sẽ được lưu trữ trong khoá bộ nhớ đệm sau: apifactory__test__apiAccessToken.

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:

  • Nếu chính sách này được đính kèm vào quy trình ProxyEndpoint, thì tiền tố sẽ là biểu mẫu ApiProxyName_ProxyEndpointName.
  • Nếu bạn đính kèm chính sách này tại TargetEndpoint thì tiền tố sẽ nằm trong biểu mẫu ApiProxyName_TargetName.

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
.

&lt;SkipCacheLookup&gt; 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>

&lt;SkipCachePopulation&gt; 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>

&lt;UseAcceptHeader&gt; 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

&lt;UseResponseCacheHeaders&gt; 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><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áchXử 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.
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.
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.
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.
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ệ.
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.

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.