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ị được 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 bộ nhớ đệm dùng chung ngắn hạn. Chính sách này được sử dụng cùng với chính sách Tra cứu bộ nhớ đệm (để đọc các mục nhập bộ nhớ đệm) 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.
<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>
Thuộc tính <PopulateCache>
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 Nếu muốn, bạn có thể sử 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 |
Đặ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 |
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 |
---|---|
Sự hiện diện | Không 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.
Khoá bộ nhớ đệm được giới hạn kích thước 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 đ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>
và <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ư.
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 LookupCache 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>
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 | 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>
và <Scope>
. Để biết thêm thông tin, hãy xem bài viết Xử lý khoá bộ nhớ đệm.
Phần tử <ExpirySettings>
Chỉ định thời điểm hết hạn một mục trong bộ nhớ đệm. Nếu có, <TimeoutInSeconds>
sẽ ghi đè cả <TimeOfDay>
và <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 | Nội dung mô tả |
---|---|
<TimeoutInSeconds> |
Số giây sau đó 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ử |
<ExpiryDate> |
Chỉ định ngày hết hạn cho một mục trong bộ nhớ đệm. Chỉ định một chuỗi trong biểu mẫu <ExpirySettings> <ExpiryDate ref="var-containing-date">expiry</ExpiryDate> </ExpirySettings> Nếu ngày được chỉ định là ngày trong quá khứ, chính sách sẽ áp dụng thời gian tồn tại tối đa cho mục đã lưu vào bộ nhớ đệm. Tần suất tối đa là 30 ngày. |
<TimeOfDay> |
Chỉ định thời gian trong ngày mà một mục nhập bộ nhớ đệm sẽ hết hạn.
Hãy chỉ định một chuỗi ở dạng <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 sẽ là:TimeoutInSeconds
, ExpiryDate
, TimeOfDay
.
Với mỗi phần tử con trong số các phần tử con nêu trên của <ExpirySettings>
, nếu bạn chỉ định thuộc tính ref
không bắt buộc trong phần tử con, thì chính sách này sẽ truy xuất giá trị hết hạn qua biến ngữ cảnh đã đặt tên. Nếu biến không được xác định, chính sách này sẽ sử dụng giá trị văn bản cố định của phần tử con.
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 như sau khi đặt phạm vi thành Exclusive
:
orgName__envName__apiProxyName__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>
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
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 |
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ưới 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 trước trong dạng 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 trước trong biểu mẫu orgName__envName__apiProxyName__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:
Khoá bộ nhớ đệm được thêm vào trước dạng orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName Ví dụ: chuỗi đầy đủ có thể có dạng như sau: apifactory__test__weatherapi__16__default__apiAccessToken. |
Phần tử <Source>
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
Hãy dùng chính sách này cho mục đích lưu vào bộ nhớ đệm thông thường. Trong thời gian chạy, chính sách <PopulateCache>
sẽ ghi dữ liệu từ biến mà bạn đã chỉ định trong phần tử <Source>
vào bộ nhớ đệm mà bạn đã chỉ định trong phần tử <CacheResource>
. Bạn có thể sử dụng các phần tử <CacheKey>
, <Scope>
và <Prefix>
để chỉ định khoá mà bạn có thể sử dụng trong 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 sẽ hết hạn.
Tính năng lưu vào bộ nhớ đệm cho nhiều mục đích thông thường bằng chính sách PopulateCache, chính sách Tra cứu và chính sách InvalidateCache sẽ sử dụng một bộ nhớ đệm mà bạn định cấu hình hoặc một 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 này, bạn chỉ cần bỏ qua phần tử <CacheResource>
.
Giới hạn bộ nhớ đệm: Nhiều giới hạn bộ nhớ đệm được áp dụng, chẳng hạn như tên và kích thước giá trị, tổng số bộ nhớ đệm, số mục trong bộ nhớ đệm và thời hạn.
Để 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.
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 các tổ chức hỗ trợ PCI và HIPAA. Mã hoá cho các tổ chức đó được định cấu hình trong quá trình cấp phép tổ chức.
Mã lỗi
Phần này mô tả các mã lỗi và thông báo lỗi được trả về, cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này đóng vai trò quan trọng trong việc phát triển các quy tắc lỗi để xử lý lỗi. Để 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.
Lỗi thời gian chạy
Những lỗi này có thể xảy ra khi thực thi chính sách.
Mã lỗi | Trạng thái HTTP | Xảy ra khi |
---|---|---|
policies.populatecache.EntryCannotBeCached |
500 | Không thể lưu một mục vào bộ nhớ đệm. Đối tượng thông báo đang được lưu vào bộ nhớ đệm không phải là một thực thể của lớp Có thể chuyển đổi tuần tự. |
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> trong chính sách PopulateCache đượ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. |
build |
CacheNotFound |
Bộ nhớ đệm được chỉ định trong phần tử <CacheResource> không tồn tại. |
build |
Biến lỗi
Các biến này được đặt khi chính sách này kích hoạt lỗi. Để biết thêm thông tin, hãy xem Những điều bạn cần biết về lỗi chính sách.
Biến | Trong đó | Ví dụ: |
---|---|---|
fault.name="fault_name" |
fault_name là tên của lỗi, như liệt kê trong bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng của mã lỗi. | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name là tên của chính sách báo lỗi do người dùng chỉ định. | populatecache.POP-CACHE-1.failed = true |
Ví dụ về phản hồi lỗi
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
Ví dụ về quy tắc lỗi
<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>