ক্যাশে কী নিয়ে কাজ করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

ক্যাশে নীতি ব্যবহার করার সময়, আপনি ক্যাশে কী কনফিগার করে ক্যাশে করা ভ্যালু কী-এর অনন্যতা নিশ্চিত করেন। আপনি কনফিগার করতে পারেন এমন অন্যান্য ভ্যালুর সাথে ক্যাশে কী আপনাকে সেই একই ডেটা পেতে একটি নির্ভরযোগ্য উপায় দেয় যা আপনি ইনপুট করেছেন। আপনি পপুলেট ক্যাশে নীতি, লুকআপ ক্যাশে নীতি, ইনভ্যালিডেট ক্যাশে নীতি এবং রেসপন্স ক্যাশে নীতি সহ ক্যাশে কী ব্যবহার করেন।

কনফিগারেশন এলিমেন্টের ভ্যালু -- <CacheKey>/<KeyFragment>, <Scope> এবং <Prefix> -- একটি শনাক্তকারী তৈরি করতে কনক্যাটেনেট করা হয় যা ক্যাশেতে আপনার দেওয়া ভ্যালুর সাথে যুক্ত থাকে। আপনি ভ্যালু রিট্রিভ করার জন্য এই একই কনফিগারেশন ব্যবহার করেন।

নিম্নলিখিত ক্যাশে নীতি কনফিগারেশন এলিমেন্ট ব্যবহার করে আপনি ক্যাশে কী তৈরি করতে পারবেন:

ক্যাশে কনফিগারেশন এলিমেন্ট বিবরণ
<CacheKey> / <KeyFragment> ক্যাশে এন্ট্রির জন্য অনন্য শনাক্তকারী নির্দিষ্ট করতে, একসাথে <CacheKey> <KeyFragment> এলিমেন্ট ব্যবহার করুন। KeyFragment ভ্যালু স্ট্যাটিক লিটেরাল বা ভেরিয়েবেল থেকে সেট করা হতে পারে।
<Scope> বা <Prefix> নেমস্পেস ক্যাশে কী আরও ভাগ করতে <Scope> বা <Prefix> এলিমেন্ট ব্যবহার করুন। <Scope> আগে থেকে সংজ্ঞায়িত ভ্যালুর একটি তালিকা গণনা করে। <Prefix> এলিমেন্ট, আপনার বেছে নেওয়া ভ্যালু দিয়ে <Scope>-কে ওভাররাইড করে।

এইসব ভ্যালু নিম্নলিখিত ফর্ম্যাটে কনক্যাটেনেট করা হয়, যেখানে <Scope> বা <Prefix> ভ্যালুগুলি ডবল আন্ডারস্কোর দিয়ে KeyFragment ভ্যালু থেকে আলাদা করা হয়। একাধিক KeyFragment ভ্যালুও ডবল আন্ডারস্কোর দিয়ে আলাদা করা হয়।

স্কোপ | prefix__keyfragment[__keyfragment]

রেসপন্স ক্যাশে নীতির সাহায্যে, আপনি ঐচ্ছিকভাবে রেসপন্স Accept হেডার থেকে ভ্যালু সহ এই ক্যাশে কী যোগ করতে পারবেন।

<CacheKey> ব্যবহার করা

<CacheKey> এলিমেন্ট কনফিগার করে যে Edge কীভাবে প্রতিটি ক্যাশে এন্ট্রির জন্য একটি অনন্য শনাক্তকারী (একটি কী) তৈরি করবে। Edge যখন ক্যাশে করা ভ্যালু রিট্রিভ করে, তখন সঠিক ভ্যালু লোকেট করার জন্য এটি ক্যাশে কী ব্যবহার করে। ResponseCache নীতিতে, একটি কনফিগারেশন ক্যাশে ও রিট্রিভ করার জন্য কী নির্ধারণ করে। PopulateCache ও LookupCache নীতিতে, প্রতিটি নীতিতে অবশ্যই একই ধরনের <CacheKey>এলিমেন্ট থাকতে হবে, যাতে ক্যাশে থেকে পাওয়া মানটি সেখানে রাখা মানের সাথে মিলে যায়।

<CacheKey> এলিমেন্টে একাধিক <KeyFragment> এলিমেন্ট থাকতে পারে। রানটাইমে, <KeyFragment> এলিমেন্ট দ্বারা নির্দিষ্ট করা মানগুলি ক্যাশে কী-এর অংশ তৈরি করতে, তাদের মধ্যে দুটি আন্ডারস্কোর সহ কনক্যাটেনেট করা হয়।

যেমন, নিম্নলিখিত কনফিগারেশন ক্যাশে কী-তে ব্যবহারের জন্য hello__world ভ্যালু তৈরি করে:

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

এছাড়াও, আপনি এখানে দেখানো <KeyFragment> এলিমেন্টে ভেরিয়েবল উল্লেখ করে ক্যাশে কী-তে ভেরিয়েবল ভ্যালু ব্যবহার করতে পারেন:

<KeyFragment ref="variable_name"/>

যেমন, অনুরোধ মেসেজের Content-Type অন্তর্ভুক্ত করার জন্য ক্যাশে কী ভ্যালু তৈরি করতে, আপনাকে এগুলি করতে হবে:

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

নিচের কনফিগারেশনে, request.header.Content-Type ভেরিয়েবলের ভ্যালু হল application/json.

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

এর ফলে apiAccessToken__application/json__bar দিয়ে শেষ হওয়া ক্যাশে কী তৈরি হয়।

আপনি যেসব ভেরিয়েবল ব্যবহার করতে পারবেন তার তালিকা দেখতে, ভেরিয়েবল রেফারেন্স দেখুন।

কোয়েরি প্যারামিটার থেকে প্রাপ্ত ক্যাশে কী

request.queryparam.<queryparam_name> এবং request.querystring-এর মতো ভেরিয়েবল ব্যবহার করে, আপনি ক্যাশে কী কনফিগার করতে পারবেন যাতে কী-তে অনুরোধের কোয়েরি স্ট্রিংয়ের অংশ অন্তর্ভুক্ত থাকে। যেমন, নিচের URL-এ দুটি কোয়েরি প্যারামিটার -- param1 ও param2 -- ব্যবহার করা হয়েছে, যা আপনি নিজের ক্যাশে কী-তে ব্যবহার করতে পারেন:

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

আপনার <CacheKey> এলিমেন্ট নিম্নলিখিত কনফিগারেশনের মাধ্যমে এইসব ভ্যালু অন্তর্ভুক্ত করতে পারে: যেমন:

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

রানটাইমে, ক্যাশে কী-তে নিম্নলিখিত মতো প্যারামিটার ভ্যালু কনক্যাটেনেট করা থাকবে:

other_key_parts__value1__value2

মনে রাখবেন, প্যারামিটার থেকে ভ্যালু যোগ করার জন্য ভেরিয়েবল ব্যবহার করলে, ভ্যালুগুলি <KeyFragment> এলিমেন্টের ক্রম অনুযায়ী যোগ করা হবে। এছাড়াও, মনে রাখবেন, Edge শুধুমাত্র সেইসব ভ্যালু ব্যবহার করবে যেগুলি আপনি নির্দিষ্টভাবে <KeyFragment> এলিমেন্টের মাধ্যমে রেফারেন্স করেছেন। আপনার অনুরোধের কোয়েরি প্যারামিটার তালিকা আলাদা আলাদা হলে, ক্যাশে কী-তে তার পার্থক্য বিবেচনা করা হবে না।

এর বিকল্প হিসেবে request.querystring ভেরিয়েবল ব্যবহার করা যেতে পারে, যা আক্ষরিক অর্থে প্যারামিটারের সম্পূর্ণ স্ট্রিং ক্যাশে কী হিসেবে যোগ করে। মনে রাখবেন, এই পদ্ধতিতে সব প্যারামিটার হিসেবে ধরা হলেও, একটি অনুরোধ থেকে অন্য অনুরোধে প্যারামিটারের ক্রম আলাদা হলে, কী আলাদা হবে। অন্যভাবে বলতে গেলে, param1=value1&param2=value2 এবং param2=value2&param1=value1 একই ক্যাশে কী ভ্যালু তৈরি করে না।

আপনি যেসব ভেরিয়েবল ব্যবহার করতে পারবেন তার তালিকা দেখতে, ভেরিয়েবল রেফারেন্স দেখুন।

<Scope> ও <Prefix> ব্যবহার করা

<Scope> ও <Prefix> এলিমেন্ট, নেমস্পেস প্রিফিক্স সহ কী বাড়ানোর একটি উপায় প্রদান করে। সেগুলি যে ভ্যালু দেখায় তা আপনার ক্যাশে কী-এর আগে যোগ করা হয়।

ডিফল্ট হিসেবে <Scope> এলিমেন্ট ব্যবহার করা হয়। এটি একটি এনুমেরেশন যার ভ্যালু ব্রড থেকে ন্যারো পর্যন্ত রেঞ্জে থাকে, যেখানে ন্যারো হল ডিফল্ট। আপনি অন্য কোনও ভ্যালু বা <Prefix> এলিমেন্ট ভ্যালু নির্দিষ্ট না করলে এই ডিফল্ট ভ্যালু ব্যবহার করা হয়। আপনি <Prefix> এলিমেন্ট ব্যবহার করে <Scope> ভ্যালু ওভাররাইড করতে এবং নেমস্পেসিংয়ের জন্য কাস্টম ভ্যালু নির্দিষ্ট করতে পারবেন।

যেমন, <Scope> ভ্যালু "Global" -- সবচেয়ে বিস্তৃত স্কোপ -- সংস্থা ও এনভায়রনমেন্টের নামকে বোঝায়। তাই, আপনার প্রক্সি যদি 'mycompany' নামের কোনও সংস্থা এবং 'prod' নামের কোনও এনভায়রনমেন্টে ডেপ্লয় করা হয়, তাহলে তার ফলে প্রাপ্ত প্রি-পেন্ড করা ভ্যালু নিম্নলিখিত হবে:

কনফিগারেশন ফলাফল
<Scope>Global</Scope> mycompany__prod__।

আপনি যদি উপরে উল্লিখিত ক্যাশে কী সহ গ্লোবাল স্কোপ ব্যবহার করেন, তাহলে ফলাফলটি নিম্নলিখিত হবে:

কনফিগারেশন ফলাফল
<Scope>Global</Scope>
<CacheKey>
    <KeyFragment>hello</KeyFragment>
    <KeyFragment>world</KeyFragment>
<CacheKey>
mycompany__prod__hello__world।

LookupCache নীতিতে বর্ণিত, স্কোপকে গ্লোবাল থেকে এক্সক্লুসিভে আরও নির্দিষ্ট করে কনফিগার করা যেতে পারে। এক্সক্লুসিভ স্কোপ হল সবচেয়ে নির্দিষ্ট এবং তাই প্রদত্ত ক্যাশে নেমস্পেস সংঘর্ষের ন্যূনতম ঝুঁকি উপস্থাপন করে। এক্সক্লুসিভ স্কোপ সহ প্রতিটি ক্যাশে এন্ট্রি নিম্নলিখিত ফর্মের প্রিফিক্স সহ থাকে:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__[serializedCacheKey]

যেমন, <Scope> -এর জন্য এক্সক্লুসিভ ভ্যালু ব্যবহার করে তৈরি করা ক্যাশে কীটি দেখতে এইরকম হবে:

apifactory__test__weatherapi__16__default__apiAccessToken