Chính sách điền sẵn vào bộ nhớ đệm

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

Định cấu hình cách ghi các giá trị đã lưu vào bộ nhớ đệm trong thời gian chạy.

Chính sách Điền vào bộ nhớ đệm được thiết kế để ghi các mục trong một bộ nhớ đệm dùng chung ngắn hạn. Tham số này được sử dụng cùng với hàm Lookup Chính sách bộ nhớ đệm (để đọ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).

Để lưu phản hồi của các tài nguyên phụ trợ vào bộ nhớ đệm, hãy xem Chính sách về bộ nhớ đệm của phản hồi.

Tham chiếu phần tử

Dưới đây là danh sách các thành phần mà bạn có thể thiết lập theo chính sách này.

<PopulateCache async="false" continueOnError="false" enabled="true" name="Populate-Cache-1">
    <DisplayName>Populate Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSeconds>300</TimeoutInSeconds>
    </ExpirySettings>
    <Source>flowVar</Source>
</PopulateCache>

&lt;PopulateCache&gt; thuộc tính

The following table describes attributes that are common to all policy parent elements:

Attribute Description Default Presence
name

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required
continueOnError

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional
enabled

Set to true to enforce the policy.

Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional
async

This attribute is deprecated.

false Deprecated

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>
Default

N/A

If you omit this element, the value of the policy's name attribute is used.

Presence Optional
Type String

&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.

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;CacheResource&gt; phần tử

Chỉ định bộ nhớ đệm nơi lưu trữ thông báo.

Bỏ qua hoàn toàn phần tử này nếu chính sách này (và LookupCache và Chính sách InvalidateCache) đang dùng bộ nhớ đệm dùng chung đi kè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;ExpirySettings&gt; phần tử

Chỉ định thời điểm một mục trong bộ nhớ đệm hết hạn. Thời gian hiện tại, <TimeoutInSeconds> lượt ghi đè cả <TimeOfDay><ExpiryDate>.

<ExpirySettings>
  <!-- use exactly one of the following child elements -->
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</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ử con của <ExpirySettings>

Sử dụng đúng một phần tử con. Bảng sau đây mô tả các phần tử con của <ExpirySettings>:

Phần tử con Mô tả
<TimeoutInSeconds>

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

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

Phần tử này thay thế phần tử TimeoutInSec hiện không được dùng nữa.

<ExpiryDate>

Chỉ định ngày hết hạn của một mục trong bộ nhớ đệm. Chỉ định một chuỗi trong biểu mẫu mm-dd-yyyy.

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

Nếu ngày được chỉ định là trong quá khứ, chính sách sẽ áp dụng thời gian tồn tại tối đa đối với mục nhập được lưu vào bộ nhớ đệm. Thời gian tối đa là 30 ngày.

<TimeOfDay>

Chỉ định thời gian trong ngày mà mục nhập bộ nhớ đệm sẽ hết hạn. Chỉ định chuỗi ở dạng HH:mm:ss, trong đó HH đại diện cho giờ theo đồng hồ 24 giờ, theo múi giờ UTC. Ví dụ: 14:30:00 có nghĩa là 2:30 chiều.

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

Bạn chỉ nên chỉ định một trong các phần tử con có thể có. Nếu bạn chỉ định nhiều phần tử, thứ tự ưu tiên là:TimeoutInSeconds, ExpiryDate, TimeOfDay.

Với mỗi phần tử con trong số các phần tử con ở trên của <ExpirySettings>, nếu bạn chỉ định thuộc tính ref (không bắt buộc) trên phần tử con, thì chính sách sẽ truy xuất giá trị hết hạn từ biến ngữ cảnh được đặt tên. Nếu biến không được xác định, chính sách này sử dụng giá trị văn bản cố định của phần tử con.

&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

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;Source&gt; phần tử

Chỉ định biến có giá trị phải được ghi vào bộ nhớ đệm.

<Source>source_variable</Source>

Mặc định:

Không áp dụng

Sự hiện diện:

Bắt buộc

Loại:

Chuỗi

Lưu ý về cách sử dụng

Sử dụng chính sách này cho mục đích lưu vào bộ nhớ đệm nói chung. Trong thời gian chạy, Chính sách <PopulateCache> ghi dữ liệu từ biến mà bạn đã chỉ định trong <Source> vào bộ nhớ đệm mà bạn đã chỉ định trong Phần tử <CacheResource>. Bạn có thể dùng <CacheKey>, Các phần tử <Scope><Prefix> để chỉ định một khoá mà bạn có thể sử dụng từ chính sách <LookupCache> để truy xuất giá trị. Sử dụng Phần tử <ExpirySettings> để định cấu hình thời điểm giá trị được lưu vào bộ nhớ đệm hết hạn.

Việc lưu vào bộ nhớ đệm cho mục đích chung mà sử dụng chính sách FillCache, chính sách LookupCachechính sách InvalidateCache có thể là bộ nhớ đệm bạn định cấu hình hoặc bộ nhớ đệm dùng chung có sẵn theo mặc định. Trong hầu hết các trường hợp, bộ nhớ đệm dùng chung cơ bản có thể đáp ứng nhu cầu của bạn. Để sử dụng bộ nhớ đệm này, chỉ cần bỏ qua Phần tử <CacheResource>.

Giới hạn bộ nhớ đệm: Nhiều mức giới hạn đối với bộ nhớ đệm áp dụng, chẳng hạn như tên và kích thước giá trị, tổng số bộ nhớ đệm, số lượng mục trong bộ nhớ đệm, và ngày hết hạn.

Để biết thêm thông tin về kho dữ liệu cơ bản, hãy xem phần Bộ nhớ đệm nội bộ. Để 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 bộ nhớ đệm của môi trường.

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.

Mã lỗi

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP Status Occurs when
policies.populatecache.EntryCannotBeCached 500 An entry cannot be cached. The message object being cached is not an instance of a class that is Serializable.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidCacheResourceReference This error occurs if the <CacheResource> element in the PopulateCache policy is set to a name that does not exist in the environment where the API proxy is being deployed.
CacheNotFound The cache specified in the <CacheResource> element does not exist.

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name = "EntryCannotBeCached"
populatecache.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. populatecache.POP-CACHE-1.failed = true

Example error response

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

Example fault rule

<FaultRule name="Populate Cache Fault">
    <Step>
        <Name>AM-EntryCannotBeCached</Name>
        <Condition>(fault.name Matches "EntryCannotBeCached") </Condition>
    </Step>
    <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition>
</FaultRule>