Chính sách LookupCache

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 truy xuất các giá trị được lưu vào bộ nhớ đệm trong thời gian chạy.

Chính sách này nhằm mục đích sử dụng vào bộ nhớ đệm trong thời gian ngắn có mục đích chung. Chính sách này được sử dụng cùng với Chính sách Điền bộ nhớ đệm (để viết các mục nhập) và Chính sách Vô hiệu hoá bộ nhớ đệm (để vô hiệu hoá các mục nhập).

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

Tham chiếu phần tử

Phần sau đây liệt kê các phần tử mà bạn có thể thiết lập theo chính sách này.

<LookupCache async="false" continueOnError="false" enabled="true" name="Lookup-Cache-1">
    <DisplayName>Lookup Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref=""/>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource/>
    <CacheLookupTimeoutInSeconds/>
    <Scope>Exclusive</Scope>
    <AssignTo>flowVar</AssignTo>
</LookupCache>

Bộ nhớ đệm dùng chung sẽ có sẵn theo mặc định. Để sử dụng bộ nhớ đệm dùng chung, hãy bỏ qua phần tử <CacheResource> trong cấu hình chính sách này.

Để biết thêm 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 bài viết Tạo và chỉnh sửa bộ nhớ đệm của môi trường.

Thuộc tính <LookupCache>

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

Nếu muốn, bạn có thể sử dụng phần tử <DisplayName> để gắn nhãn cho chính sách này 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 một chính sách không hoạt động. Đây là hành vi dự kiến đối với hầu hết các chính sách.

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

false Không bắt buộc
enabled

Đặt thành true để thực thi chính sách.

Đặ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 chính sách vẫn được đính kèm vào một quy trì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 name của chính sách sẽ được sử dụng.

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

Phần tử <assignTo>

Chỉ định biến mà mục nhập trong bộ nhớ đệm được chỉ định sau khi được truy xuất từ bộ nhớ đệm. Biến phải có thể ghi. Nếu quá trình tra cứu bộ nhớ đệm không truy xuất được giá trị, thì biến này sẽ không được đặt.

<AssignTo>variable_to_receive_cached_value</AssignTo>

Mặc định:

Không áp dụng

Sự hiện diện:

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.

<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 đ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><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 hoàn toàn phần tử này nếu chính sách này (và các chính sách PopulateCache và InvalidateCache tương ứng của bạn) đang sử 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 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><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><Scope>. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.

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 sau đây khi phạm vi được đặt thành Exclusive: orgName__envName__ứng dụngName__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><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ả 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 <CacheKey> bằng apiAccessToken <KeyFragment> và phạm vi <Global>, thì mỗi mục nhập sẽ được lưu trữ dưới dạng orgName__envName__apiAccessToken, theo sau là giá trị chuyển đổi tuần tự của mã truy cập. Đối với một proxy API được triển khai trong môi trường có tên là "test" (kiểm thử) trong một tổ chức có tên là "apifactory", mã truy cập sẽ được lưu trữ trong khoá bộ nhớ đệm sau đây: 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 trong biểu mẫu orgName__envName__applicationName.

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 biểu mẫu orgName__envName__ứng dụngName__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__ứng dụngName__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:

  • Nếu chính sách này được đính kèm vào quy trình ProxyEndpoint, thì tiền tố sẽ có dạng ApiProxyName_ProxyEndpointName.
  • Nếu chính sách này được đính kèm tại TargetEndpoint, thì tiền tố sẽ có dạng ApiProxyName_TargetName.

Khoá bộ nhớ đệm được thêm vào trước trong dạng orgName__envName__ứng dụngName__ImplementationedRevisionNumber__proxyNameITargetName

Ví dụ: chuỗi đầy đủ có thể có dạng như sau:

apifactory__test__weatherapi__16__default__apiAccessToken
.

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

Hãy sử dụng chính sách này cho việc lưu vào bộ nhớ đệm với mục đích chung. Trong thời gian chạy, chính sách LookupCache sẽ truy xuất một giá trị từ bộ nhớ đệm, gán giá trị đó cho biến mà bạn chỉ định bằng phần tử CaptureTo (nếu không có giá trị nào được truy xuất, biến này sẽ không được đặt). Chiến dịch này tìm kiếm giá trị dựa trên khoá bộ nhớ đệm được tạo thông qua cấu hình kết hợp các phần tử CacheKey và Scope. Nói cách khác, để truy xuất một giá trị cụ thể được thêm vào bộ nhớ đệm theo chính sách PopulateCache, chính sách LookupCache phải có các phần tử liên quan đến khoá bộ nhớ đệm được định cấu hình theo cách tương tự như chính sách PopulateCache.

Lưu vào bộ nhớ đệm cho mục đích chung thông qua chính sách Điền bộ nhớ đệm, chính sách LookupCache và chính sách InvalidateCache sẽ sử dụng bộ nhớ đệm mà bạn định cấu hình hoặc bộ nhớ đệm dùng chung được đưa vào theo mặc định. Trong hầu hết các trường hợp, bộ nhớ đệm dùng chung cơ bản sẽ đáp ứng nhu cầu của bạn. Để sử dụng bộ nhớ đệm mặc định, bạn chỉ cần bỏ qua phần tử <CacheResource>.

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

Biến luồng

Bạn có thể sử dụng các biến luồng để định cấu hình hành vi động trong thời gian chạy cho các chính sách và luồng, dựa trên tiêu đề hoặc nội dung thông báo HTTP hay ngữ cảnh có sẵn trong Flow. Để biết thêm thông tin về các biến luồng, hãy xem Tài liệu tham khảo về biến.

Các biến Flow được định nghĩa trước sau đây sẽ có sẵn sau khi bạn tuỳ chỉnh hoạt động của bộ nhớ đệm mà bạn xác định trong chính sách LookupCache.

Biến Loại Quyền Nội dung mô tả
tra cứu.{policy-name}.cachename Chuỗi Chỉ có thể đọc Trả về tên bộ nhớ đệm dùng trong chính sách.
searchcache.{policy-name}.cachekey Chuỗi Chỉ có thể đọc Trả về khoá đã sử dụng.
Tra cứucache.{policy-name}.cachehit Boolean Chỉ có thể đọc Đúng nếu chính sách tìm thấy một giá trị của khoá bộ nhớ đệm đã chỉ định.
tra cứu.{policy-name}.assignto Chuỗi Chỉ có thể đọc Trả về biến được chỉ định cho bộ nhớ đệm.

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
InvalidCacheResourceReference Lỗi này xảy ra nếu phần tử <CacheResource> được đặt thành một tên không tồn tại trong môi trường nơi proxy API đang được triển khai.
InvalidTimeout Nếu bạn đặt phần tử <CacheLookupTimeoutInSeconds> thành số âm, thì proxy API sẽ không triển khai được.
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