Làm việc với khóa bộ nhớ cache

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

Khi sử dụng chính sách bộ nhớ đệm, bạn cần định cấu hình bộ nhớ đệm để đảm bảo tính riêng biệt của các khoá giá trị đã lưu vào bộ nhớ đệm khoá. Khoá bộ nhớ đệm cùng với các giá trị khác mà bạn có thể định cấu hình, giúp bạn có được một phương thức đáng tin cậy để thoát chính dữ liệu mà bạn đã nhập vào. Bạn sử dụng khoá bộ nhớ đệm theo chính sách Điền bộ nhớ đệm, chính sách LookupCache, chính sách InvalidateCacheBộ nhớ đệm của phản hồi .

Giá trị của các phần tử cấu hình -- <CacheKey>/<KeyFragment>, <Scope><Prefix> – được nối với nhau để tạo một giá trị nhận dạng liên kết với giá trị mà bạn đã đưa vào bộ nhớ đệm. Bạn sử dụng cùng một cấu hình này để truy xuất giá trị.

Với các phần tử cấu hình chính sách bộ nhớ đệm sau, bạn có thể tạo khoá bộ nhớ đệm:

Phần tử cấu hình bộ nhớ đệm Mô tả
<CacheKey>/<KeyFragment> Sử dụng kết hợp các phần tử <CacheKey> <KeyFragment> để chỉ định một giá trị nhận dạng duy nhất cho các mục nhập trong bộ nhớ đệm. Giá trị KeyFragment có thể là giá trị cố định tĩnh hoặc tập hợp từ các biến.
<Scope> hoặc <Prefix> Sử dụng phần tử <Scope> hoặc <Prefix> để phân tích thêm khoá bộ nhớ đệm của không gian tên. <Scope> liệt kê một danh sách các giá trị được xác định trước. Phần tử <Prefix> ghi đè <Scope> bằng một giá trị do chính bạn chọn.

Các giá trị này được nối với nhau trong biểu mẫu sau, với <Scope> hoặc Các giá trị <Prefix> được phân tách với các giá trị KeyFragment bằng dấu gạch dưới kép. Nhiều giá trị KeyFragment cũng được phân tách bằng dấu gạch dưới kép.

phạm vi | prefix__keyfragment[__keyfragment]

Với Bộ nhớ đệm của phản hồi , bạn có thể tuỳ ý thêm khoá bộ nhớ đệm này với các giá trị lấy từ phản hồi Accept (Chấp nhận) .

Dùng <CacheKey>

Phần tử <CacheKey> định cấu hình cách Edge tạo một giá trị nhận dạng duy nhất (khoá) cho mỗi mục trong bộ nhớ đệm mà công cụ đó tạo. Khi truy xuất giá trị đã lưu vào bộ nhớ đệm, Edge sẽ sử dụng bộ nhớ đệm này để tìm giá trị chính xác. Trong chính sách Bộ nhớ đệm phản hồi, một cấu hình xác định khoá cho cả việc lưu vào bộ nhớ đệm và truy xuất. Trong chính sách ĐiềnCache và LookupCache, mỗi chính sách phải có các phần tử <CacheKey> giống nhau để đảm bảo rằng giá trị được truy xuất từ tương ứng với một giá trị được đặt ở đó.

Phần tử <CacheKey> có thể bao gồm nhiều Phần tử <KeyFragment>. Trong thời gian chạy, giá trị được chỉ định bởi Các phần tử <KeyFragment> được nối với 2 dấu gạch dưới giữa chúng trong tạo một phần của khoá bộ nhớ đệm.

Ví dụ: cấu hình sau đây tạo ra một giá trị là hello__world để sử dụng trong khoá bộ nhớ đệm:

<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>

Bạn cũng có thể sử dụng các giá trị biến trong khoá bộ nhớ đệm bằng cách tham chiếu biến trong một Phần tử <KeyFragment>, như minh hoạ dưới đây:

<KeyFragment ref="variable_name"/>

Ví dụ: để làm cho giá trị khoá bộ nhớ đệm kết hợp với Loại-Nội dung của thông báo yêu cầu, bạn làm như sau:

<KeyFragment ref="request.header.Content-Type"/>

Trong cấu hình sau, biến request.header.Content-Type có phương thức giá trị application/json.

<CacheKey>
  <KeyFragment>apiAccessToken</KeyFragment>
  <KeyFragment ref="request.header.Content-Type" />
  <KeyFragment>bar</KeyFragment>
</CacheKey>

Kết quả là một khoá bộ nhớ đệm kết thúc bằng apiAccessToken__application/json__bar.

Để biết danh sách các biến mà bạn có thể sử dụng, hãy xem bài viết Tài liệu tham khảo về biến.

Khoá bộ nhớ đệm bắt nguồn từ truy vấn tham số

Sử dụng các biến như request.queryparam.<queryparam_name> và request.querystring, bạn có thể định cấu hình khoá bộ nhớ đệm để khoá đó bao gồm các phần trong chuỗi truy vấn của yêu cầu. Cho ví dụ: URL sau sử dụng hai tham số truy vấn -- param1 và param2 -- mà bạn có thể sử dụng trong khoá bộ nhớ đệm:

http://myaccount.apigee.net/mydata?param1=value1&param2=value2

Phần tử <CacheKey> của bạn có thể kết hợp các giá trị này với một cấu hình chẳng hạn như sau:

<CacheKey>
    <KeyFragment ref="request.queryparam.param1" />
    <KeyFragment ref="request.queryparam.param2" />
<CacheKey>

Trong thời gian chạy, khoá bộ nhớ đệm sẽ bao gồm các giá trị thông số được nối với nhau, như trong sau:

other_key_parts__value1__value2

Lưu ý rằng khi bạn sử dụng biến để chèn giá trị từ các thông số, giá trị sẽ là được nối theo thứ tự do thứ tự phần tử <KeyFragment> đề xuất. Ngoài ra, xin lưu ý rằng Edge sẽ chỉ sử dụng những giá trị mà bạn tham chiếu cụ thể Phần tử <KeyFragment>. Nếu danh sách tham số truy vấn yêu cầu của bạn thay đổi, biến thể sẽ không được tính trong khoá bộ nhớ đệm.

Một cách thay thế là sử dụng biến request.querystring, sẽ chèn toàn bộ chuỗi của các tham số như một phần của khoá bộ nhớ đệm. Xin lưu ý rằng mặc dù phương pháp này tính đến tất cả các thông số, nếu thứ tự của thông số thay đổi giữa các yêu cầu thì phương thức khoá sẽ khác nhau. Nói cách khác, param1=value1&param2=value2param2=value2&param1=value1 không dẫn đến cùng một giá trị khoá bộ nhớ đệm.

Để biết danh sách các biến mà bạn có thể sử dụng, hãy xem bài viết Tài liệu tham khảo về biến.

Đang dùng <Scope> và <Prefix>

Các phần tử <Scope><Prefix> cung cấp cách tăng cường khoá bằng tiền tố không gian tên. Những giá trị mà các biến này đại diện sẽ được thêm vào bộ nhớ đệm của bạn .

Phần tử <Scope> được sử dụng theo mặc định. Đây là một giá trị enum có các giá trị có phạm vi từ rộng đến hẹp, trong đó hẹp nhất là mặc định. Giá trị mặc định này được sử dụng trừ phi bạn chỉ định một giá trị khác hoặc chỉ định một giá trị phần tử <Prefix>. Bạn có thể ghi đè giá trị <Scope> bằng cách sử dụng phần tử <Prefix>, và vì vậy, hãy chỉ định một giá trị tuỳ chỉnh cho khoảng cách tên.

Ví dụ: giá trị <Scope> "Toàn cầu" -- phạm vi rộng nhất -- đại diện cho tên tổ chức và tên môi trường. Do đó, nếu proxy của bạn được triển khai trong một tổ chức có tên "mycompany" và môi trường có tên "prod", thì giá trị thêm vào trước sẽ là sau:

Cấu hình Kết quả
<Scope>Global</Scope> mycompany__prod__.

Nếu bạn đang sử dụng Global scope với khoá bộ nhớ đệm được xác định ở trên, kết quả sẽ là sau:

Cấu hình Kết quả
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world.

Như được mô tả trong chính sách LookupCache, phạm vi này có thể được định cấu hình để tăng đặc trưng từ Toàn cầu lên Độc quyền. Phạm vi độc quyền là phạm vi cao nhất cụ thể, từ đó thể hiện rủi ro tối thiểu về xung đột không gian tên trong một bộ nhớ đệm nhất định. Mỗi mục trong bộ nhớ đệm có phạm vi Độc quyền được thêm vào trước ở dạng sau:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

Ví dụ: khoá bộ nhớ đệm được tạo bằng cách sử dụng giá trị Dành riêng cho <Scope> sẽ có dạng như sau:

apifactory__test__weatherapi__16__default__apiAccessToken