Chính sách không hợp lệ trong bộ nhớ cache

Bạn đang xem tài liệu về Apigee Edge.
Tham khảo tài liệu về Apigee X.
thông tin

Định cấu hình cách xoá hoàn toàn các giá trị đã lưu vào bộ nhớ đệm khỏi bộ nhớ đệm.

Chính sách này được dùng để lưu 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 vào bộ nhớ đệm (để ghi các mục nhập) và chính sách Tra cứu bộ nhớ đệm (để đọc các mục vào bộ nhớ đệm).

Để 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 phản hồi.

Tham chiếu phần tử

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

<InvalidateCache async="false" continueOnError="false" enabled="true" name="policy-name">
    <DisplayName>Policy Name</DisplayName>
    <CacheKey>
        <Prefix>prefix_string</Prefix>
        <KeyFragment ref="variable_reference"/>
        <KeyFragment>fragment_string</KeyFragment>
    </CacheKey>
    <!-- Omit this element if you're using the included shared cache. -->
    <CacheResource>cache_to_use</CacheResource>
    <Scope>scope_enumeration</Scope>
    <CacheContext>
        <APIProxyName>application_that_added_the_entry</APIProxyName>
        <ProxyName>proxy_for_which_data_was_cached</ProxyName>
        <TargetName>endpoint_for_which_data_was_cached</TargetName>
    </CacheContext>
    <PurgeChildEntries>true_to_purge_all_child_entries</PurgeChildEntries>
</InvalidateCache>

Thuộc tính <InvalidateCache>

Bảng sau đây mô tả các thuộc tính phổ biến với tất cả các phần tử chính sách chính:

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

Nếu muốn, hãy sử dụng phần tử <DisplayName> để gắn nhãn chính sách trong trình chỉnh sửa proxy của giao diện người dùng quản lý bằng một 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 thành cô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 để tiếp tục thực thi luồng ngay cả sau khi chính sách không hoạt động.

sai Không bắt buộc
enabled

Đặ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 vẫn nằm trong quy trình.

true Không bắt buộc
async

Thuộc tính này không còn được dùng nữa.

sai Không được dùng nữa

Phần tử <DisplayName>

Sử dụng ngoài thuộc tính name để 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 một 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, hệ thống sẽ sử dụng giá trị của thuộc tính name của chính sách.

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

Phần tử <CacheContext>/<APIProxyName>

Chỉ định tên của ứng dụng đã thêm mục nhập vào bộ nhớ đệm.

<APIProxyName>application_that_added_the_entry</APIProxyName>

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ó tên ứng dụng. Không áp dụng Không bắt buộc Chuỗi

Phần tử <CacheContext>

Chỉ định cách tạo khoá bộ nhớ đệm khi giá trị phần tử Prefix không được chỉ định, hoặc để xoá các mục trong bộ nhớ đệm do một proxy API khác thêm vào.

<CacheContext>
  <APIProxyName ref="variable_name">application_that_added_the_entry</APIProxyName>
  <TargetName ref="variable_name">endpoint_for_which_data_was_cached</TargetName>
  <ProxyName ref="variable_name">proxy_for_which_data_was_cached</ProxyName>
</CacheContext>

Dùng để tạo CacheKey. Bạn bắt buộc phải sử dụng giá trị của APIProxyName, ProxyName và TargetName khi không dùng tiền tố CacheKey (nghĩa là một tiền tố tuỳ chỉnh) để xoá các mục trong bộ nhớ đệm do một proxy API khác thêm vào.

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 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ụ: kết quả 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ử <CacheResource>

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

Hãy bỏ qua hoàn toàn phần tử này nếu chính sách này (cũng như các chính sách PopulateCache và LookupCache tương ứng) đ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 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ị phải được đưa vào khoá bộ nhớ đệm, tạo không gian tên để so khớp các yêu cầu với 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 tập hợp mục động bằng cách tham chiếu đến một biến). Tất cả các mảnh đã chỉ định kết hợp (cộng với tiền tố) được nối để 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 Mô tả Mặc định Sự hiện diện Loại
tham chiếu Biến mà từ đó sẽ nhận giá trị. Bạn không nên sử dụng phần tử này 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ử <CacheKey>/<Prefix>

Chỉ định một giá trị để sử 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 vào trước 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ử <CacheContext>/<ProxyName>

Chỉ định tên của proxy mà dữ liệu được lưu vào bộ nhớ đệm.

<ProxyName>proxy_for_which_data_was_cached</ProxyName>

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 mà từ đó sẽ nhận giá trị. Bạn không nên sử dụng phần tử này 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ử <PurgeChildEntries>

true để xoá hoàn toàn các mục trong bộ nhớ đệm có chung giá trị do phần tử <KeyFragment> thiết lập cho chính sách này. Giá trị trong các phần khác của khoá bộ nhớ đệm, chẳng hạn như trong các phần tử <Prefix>, sẽ không được xem xét.

Xin lưu ý rằng bạn phải chỉ định phần tử <KeyFragment>. Nếu không, việc đặt giá trị true (đúng) cho <PurgeChildEntries> có thể dẫn đến việc tất cả các mục trong bộ nhớ đệm sẽ bị xoá hoàn toàn.

Việc vô hiệu hoá tất cả mục nhập bộ nhớ đệm của cùng một giá trị phân đoạn khoá có thể là một cách hữu ích để xoá hoàn toàn nhiều mục nhập liên quan cùng một lúc.

<PurgeChildEntries>true_to_purge_child_entries</PurgeChildEntries>

Mặc định:

false

Sự hiện diện:

Không bắt buộc

Loại:

Boolean

Phần tử <Scope>

Bảng 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 một 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 khi phạm vi được đặt thành Exclusive:

orgName__envName__ứng dụngName__ImplementedRevisionNumber__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>. Các giá trị hợp lệ bao gồm nội dung 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

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 được thêm vào trước dạng orgName __ envName __.

Nếu bạn xác định một mục <CacheKey> có 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__ứng dụngTên.

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

Exclusive

Mặc định. Đây là chi tiết cụ thể nhất, do đó giúp giảm thiểu rủi ro 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, tiền tố sẽ có dạng ApiProxyName_TargetName.

Khoá bộ nhớ đệm được thêm vào trước trong biểu mẫu orgName__envName__ứng dụngName__DeployedRevisionNumber__proxyNameITargetName

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

apifactory__test__weatherapi__16__default__apiAccessToken
.

Phần tử <CacheContext>/<TargetName>

Chỉ định tên của điểm cuối đích mà dữ liệu được lưu vào bộ nhớ đệm.

<TargetName>endpoint_for_which_data_was_cached</TargetName>

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 mà từ đó sẽ nhận giá trị. Bạn không nên sử dụng phần tử này 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

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

Chức năng lưu vào bộ nhớ đệm cho mục đích chung bằng chính sách Populate Cache, chính sáchLookupCache 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ó 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 sẽ đáp ứng nhu cầu của bạn. Để sử dụng bộ nhớ đệm này, bạn chỉ cần bỏ qua phần tử <CacheResource>.

Để biết thêm 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ộ.

Mã lỗi

Phần này mô tả các thông báo lỗi và biến quy trình được đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng để biết bạn có đang phát triển các quy tắc lỗi cho proxy hay không. Để tìm hiểu thêm, hãy xem phần 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 tạo ra 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 một proxy có 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> trong chính sách InvalidateCache đượ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.
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 không được tạo trên một thành phần Bộ xử lý thông báo cụ thể.

Biến lỗi

Không áp dụng

Ví dụ về phản hồi lỗi

Không áp dụng