PopulateCache নীতি

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

রানটাইমে ক্যাশ করা মানগুলো কীভাবে লেখা হবে তা নির্ধারণ করে।

Populate Cache পলিসিটি একটি স্বল্প-মেয়াদী সাধারণ-উদ্দেশ্য ক্যাশে এন্ট্রি লেখার জন্য ডিজাইন করা হয়েছে। এটি Lookup Cache পলিসি (ক্যাশে এন্ট্রি পড়ার জন্য) এবং Invalidate Cache পলিসি (এন্ট্রি বাতিল করার জন্য)-এর সাথে একত্রে ব্যবহৃত হয়।

ব্যাকএন্ড রিসোর্সগুলির প্রতিক্রিয়া ক্যাশ করার জন্য, রেসপন্স ক্যাশ পলিসি দেখুন।

উপাদান রেফারেন্স

এই পলিসিতে আপনি যে উপাদানগুলো কনফিগার করতে পারেন, তার তালিকা নিচে দেওয়া হলো।

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

<PopulateCache> অ্যাট্রিবিউট

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
name

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

N/A প্রয়োজন
continueOnError

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<ক্যাশকী> উপাদান

ক্যাশে সংরক্ষিত কোনো ডেটার জন্য একটি অনন্য পয়েন্টার কনফিগার করে।

ক্যাশ কী-গুলির আকার ২ কিলোবাইটে সীমাবদ্ধ।

<CacheKey>
    <Prefix>string</Prefix>
    <KeyFragment ref="variable_name" />
    <KeyFragment>literal_string</KeyFragment>
</CacheKey>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

প্রয়োজনীয়

প্রকার:

প্রযোজ্য নয়

<CacheKey> ক্যাশে সংরক্ষিত প্রতিটি ডেটার নাম তৈরি করে।

রানটাইমে, <KeyFragment> ভ্যালুগুলোর শুরুতে হয় <Scope> এলিমেন্টের ভ্যালু অথবা <Prefix> ভ্যালু যুক্ত করা হয়। উদাহরণস্বরূপ, নিম্নলিখিতটির ফলে UserToken__apiAccessToken__ <value_of_client_id> নামের একটি ক্যাশ কী তৈরি হয়:

<CacheKey>
    <Prefix>UserToken</Prefix>
    <KeyFragment>apiAccessToken</KeyFragment>
    <KeyFragment ref="request.queryparam.client_id" />
</CacheKey>

আপনি <CacheKey> এলিমেন্টটি <Prefix> এবং <Scope> এর সাথে একত্রে ব্যবহার করেন। আরও তথ্যের জন্য, “ক্যাশ কী নিয়ে কাজ করা” দেখুন।

<ক্যাশরিসোর্স> উপাদান

বার্তাগুলো কোন ক্যাশেতে সংরক্ষণ করা হবে তা নির্দিষ্ট করে।

এই পলিসি (এবং আপনার সংশ্লিষ্ট LookupCache ও InvalidateCache পলিসিগুলো) যদি অন্তর্ভুক্ত শেয়ার্ড ক্যাশ ব্যবহার করে থাকে, তাহলে এই এলিমেন্টটি সম্পূর্ণভাবে বাদ দিন।

<CacheResource>cache_to_use</CacheResource>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

প্রকার:

স্ট্রিং

ক্যাশে কনফিগার করার বিষয়ে আরও জানতে, “একটি এনভায়রনমেন্ট ক্যাশে তৈরি এবং সম্পাদনা করা” দেখুন।

<CacheKey>/<KeyFragment> উপাদান

এমন একটি মান নির্দিষ্ট করে যা ক্যাশ কী-তে অন্তর্ভুক্ত করা হবে, এবং এর মাধ্যমে ক্যাশ করা প্রতিক্রিয়ার সাথে অনুরোধ মেলানোর জন্য একটি নেমস্পেস তৈরি করা হয়।

<KeyFragment ref="variable_name"/>
<KeyFragment>literal_string</KeyFragment>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

প্রকার:

প্রযোজ্য নয়

এটি একটি কী (আপনার দেওয়া একটি স্থির নাম) অথবা একটি ভ্যালু (একটি ভেরিয়েবল রেফারেন্স করে সেট করা একটি ডাইনামিক এন্ট্রি) হতে পারে। নির্দিষ্ট করা সমস্ত ফ্র্যাগমেন্ট (প্রিফিক্স সহ) একত্রিত করে ক্যাশে কী তৈরি করা হয়।

<KeyFragment>apiAccessToken</KeyFragment>
<KeyFragment ref="request.queryparam.client_id" />

আপনি <KeyFragment> এলিমেন্টটি <Prefix> এবং <Scope> এর সাথে একত্রে ব্যবহার করেন। আরও তথ্যের জন্য, “ক্যাশ কী নিয়ে কাজ করা” দেখুন।

বৈশিষ্ট্য

বৈশিষ্ট্য প্রকার ডিফল্ট প্রয়োজনীয় বর্ণনা
রেফারেন্স স্ট্রিং না

যে ভেরিয়েবল থেকে মানটি নেওয়া হবে। যদি এই এলিমেন্টটিতে কোনো আক্ষরিক মান থাকে, তবে এটি ব্যবহার করা উচিত নয়।

<ক্যাশকী>/<প্রিফিক্স> উপাদান

ক্যাশ কী প্রিফিক্স হিসেবে ব্যবহার করার জন্য একটি মান নির্দিষ্ট করে।

<Prefix>prefix_string</Prefix>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

প্রকার:

স্ট্রিং

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

আপনি <Prefix> এলিমেন্টটি <CacheKey> এবং <Scope> এর সাথে একত্রে ব্যবহার করেন। আরও তথ্যের জন্য, “Working with cache keys” দেখুন।

<ExpirySettings> উপাদান

একটি ক্যাশ এন্ট্রির মেয়াদ কখন শেষ হবে তা নির্দিষ্ট করে। এটি উপস্থিত থাকলে, <TimeoutInSeconds> <TimeOfDay> এবং <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>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

প্রয়োজনীয়

প্রকার:

প্রযোজ্য নয়

<ExpirySettings> এর চাইল্ড এলিমেন্টসমূহ

ঠিক একটি চাইল্ড এলিমেন্ট ব্যবহার করুন। নিচের সারণিতে <ExpirySettings> এর চাইল্ড এলিমেন্টগুলোর বর্ণনা দেওয়া হলো:

শিশু উপাদান বর্ণনা
<TimeoutInSeconds>

যে সংখ্যক সেকেন্ড পরে একটি ক্যাশ এন্ট্রির মেয়াদ শেষ হবে।

<ExpirySettings>
  <TimeoutInSeconds ref="var-containing-duration">expiry</TimeoutInSeconds>
</ExpirySettings>

এই এলিমেন্টটি বর্তমানে অপ্রচলিত TimeoutInSec এলিমেন্টকে প্রতিস্থাপন করে।

<ExpiryDate>

যে তারিখে একটি ক্যাশ এন্ট্রির মেয়াদ শেষ হবে, তা নির্দিষ্ট করে। mm-dd-yyyy ফরম্যাটে একটি স্ট্রিং উল্লেখ করুন।

<ExpirySettings>
  <ExpiryDate ref="var-containing-date">expiry</ExpiryDate>
</ExpirySettings>

নির্দিষ্ট তারিখটি যদি অতীতের হয়, তাহলে পলিসিটি ক্যাশ করা এন্ট্রির ক্ষেত্রে সর্বোচ্চ মেয়াদকাল প্রয়োগ করবে। এই সর্বোচ্চ সীমা হলো ৩০ দিন।

<TimeOfDay>

দিনের যে সময়ে একটি ক্যাশ এন্ট্রির মেয়াদ শেষ হবে, তা নির্দিষ্ট করে। HH:mm:ss ফর্ম্যাটে একটি স্ট্রিং নির্দিষ্ট করুন, যেখানে HH হলো UTC টাইম জোনের ২৪-ঘণ্টার ঘড়ির ঘণ্টা। উদাহরণস্বরূপ, 14:30:00 মানে হলো বিকেল ২:৩০।

<ExpirySettings>
  <TimeOfDay ref="var-containing-time">expiry</TimeOfDay>
</ExpirySettings>

আপনাকে সম্ভাব্য চাইল্ড এলিমেন্টগুলোর মধ্যে কেবল একটিই নির্দিষ্ট করতে হবে। যদি আপনি একাধিক এলিমেন্ট নির্দিষ্ট করেন, তবে অগ্রাধিকারের ক্রমটি হলো: TimeoutInSeconds , ExpiryDate , TimeOfDay

<ExpirySettings> এর উপরের প্রতিটি চাইল্ড এলিমেন্টের ক্ষেত্রে, যদি আপনি ঐচ্ছিক ref অ্যাট্রিবিউটটি নির্দিষ্ট করেন, তাহলে পলিসিটি নামযুক্ত কনটেক্সট ভেরিয়েবল থেকে এক্সপায়ারির মানটি গ্রহণ করবে। যদি ভেরিয়েবলটি সংজ্ঞায়িত না থাকে, তাহলে পলিসিটি চাইল্ড এলিমেন্টটির আক্ষরিক টেক্সট মান ব্যবহার করে।

<Scope> উপাদান

যখন <CacheKey> এলিমেন্টে কোনো <Prefix> এলিমেন্ট প্রদান করা হয় না, তখন ক্যাশ কী-এর জন্য একটি প্রিফিক্স তৈরি করতে এই এনুমারেশনটি ব্যবহৃত হয়।

<Scope>scope_enumeration</Scope>

ডিফল্ট:

"একচেটিয়া"

উপস্থিতি:

ঐচ্ছিক

প্রকার:

স্ট্রিং

<Scope> সেটিংটি একটি ক্যাশ কী নির্ধারণ করে, যা <Scope> মানের উপর ভিত্তি করে শুরুতে যুক্ত হয়। উদাহরণস্বরূপ, যখন স্কোপ Exclusive এ সেট করা হয়, তখন একটি ক্যাশ কী নিম্নলিখিত রূপ ধারণ করবে:

orgName__envName__apiProxyName__deployedRevisionNumber__proxy|TargetName__ [ serializedCacheKey ]

<CacheKey> তে যদি একটি <Prefix> এলিমেন্ট থাকে, তবে তা <Scope> এলিমেন্টের মানকে বাতিল করে দেয়। বৈধ মানগুলোর মধ্যে নিচের এনুমারেশনগুলো অন্তর্ভুক্ত।

আপনি <Scope> এলিমেন্টটি <CacheKey> এবং <Prefix> এর সাথে একত্রে ব্যবহার করেন। আরও তথ্যের জন্য, “Working with cache keys” দেখুন।

গ্রহণযোগ্য মান

Global

পরিবেশে স্থাপন করা সমস্ত এপিআই প্রক্সির মধ্যে ক্যাশে কী শেয়ার করা হয়। ক্যাশে কী-টি orgName __ envName __ আকারে শুরুতে যুক্ত করা হয়।

যদি আপনি <KeyFragment> apiAccessToken এবং একটি <Global> স্কোপ সহ একটি <CacheKey> এন্ট্রি সংজ্ঞায়িত করেন, তাহলে প্রতিটি এন্ট্রি orgName__envName__apiAccessToken হিসেবে সংরক্ষিত হয়, যার পরে অ্যাক্সেস টোকেনের সিরিয়ালাইজড মান থাকে। 'apifactory' নামক একটি অর্গানাইজেশনের 'test' নামক একটি এনভায়রনমেন্টে ডেপ্লয় করা একটি এপিআই প্রক্সির জন্য, অ্যাক্সেস টোকেনগুলি নিম্নলিখিত ক্যাশ কী-এর অধীনে সংরক্ষিত হবে: apifactory__test__apiAccessToken

Application

এপিআই প্রক্সি নামটি প্রিফিক্স হিসেবে ব্যবহৃত হয়।

ক্যাশ কী-টি orgName__envName__apiProxyName আকারে শুরুতে যুক্ত করা হয়।

Proxy

ProxyEndpoint কনফিগারেশনটি প্রিফিক্স হিসেবে ব্যবহৃত হয়।

ক্যাশ কী-টি orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName আকারে শুরুতে যুক্ত করা হয়।

Target

টার্গেটএন্ডপয়েন্ট কনফিগারেশনটি প্রিফিক্স হিসেবে ব্যবহৃত হয়।

orgName__envName__apiProxyName__deployedRevisionNumber__targetEndpointName আকারে ক্যাশে কী শুরুতে যুক্ত করা হয়।

Exclusive

ডিফল্ট। এটি সবচেয়ে সুনির্দিষ্ট, এবং তাই একটি নির্দিষ্ট ক্যাশের মধ্যে নেমস্পেস সংঘর্ষের ঝুঁকি ন্যূনতম থাকে।

উপসর্গ হলো দুটি রূপের একটি:

  • যদি পলিসিটি ProxyEndpoint ফ্লো-এর সাথে সংযুক্ত থাকে, তাহলে প্রিফিক্সটি ApiProxyName_ProxyEndpointName এই ফর্মের হয়ে থাকে।
  • যদি পলিসিটি TargetEndpoint এ সংযুক্ত করা থাকে, তাহলে প্রিফিক্সটি ApiProxyName_TargetName এই ফর্মের হয়ে থাকে।

orgName__envName__apiProxyName__deployedRevisionNumber__proxyNameITargetName আকারে ক্যাশে কী শুরুতে যুক্ত করা হয়

উদাহরণস্বরূপ, সম্পূর্ণ স্ট্রিংটি দেখতে এইরকম হতে পারে:

apifactory__test__weatherapi__16__default__apiAccessToken
.

<উৎস> উপাদান

যে ভেরিয়েবলের মান ক্যাশে লেখা হবে, তা নির্দিষ্ট করে।

<Source>source_variable</Source>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

প্রয়োজনীয়

প্রকার:

স্ট্রিং

ব্যবহারের নির্দেশাবলী

সাধারণ ক্যাশিংয়ের জন্য এই পলিসিটি ব্যবহার করুন। রানটাইমে, <PopulateCache> পলিসিটি <Source> এলিমেন্টে আপনার নির্দিষ্ট করা ভ্যারিয়েবল থেকে ডেটা নিয়ে <CacheResource> এলিমেন্টে আপনার নির্দিষ্ট করা ক্যাশে লিখে দেয়। আপনি <CacheKey> , <Scope> , এবং <Prefix> এলিমেন্টগুলো ব্যবহার করে একটি কী (key) নির্দিষ্ট করতে পারেন, যা আপনি <LookupCache> পলিসি থেকে ভ্যালুটি পুনরুদ্ধার করতে ব্যবহার করতে পারবেন। ক্যাশ করা ভ্যালুটির মেয়াদ কখন শেষ হবে তা কনফিগার করতে <ExpirySettings> এলিমেন্টটি ব্যবহার করুন।

PopulateCache পলিসি, LookupCache পলিসি এবং InvalidateCache পলিসির সাথে সাধারণ ক্যাশিং আপনার কনফিগার করা কোনো ক্যাশ অথবা ডিফল্টরূপে অন্তর্ভুক্ত কোনো শেয়ার্ড ক্যাশ ব্যবহার করে। বেশিরভাগ ক্ষেত্রে, অন্তর্নিহিত শেয়ার্ড ক্যাশটিই আপনার প্রয়োজন মেটানোর জন্য যথেষ্ট হওয়া উচিত। এই ক্যাশটি ব্যবহার করতে, কেবল <CacheResource> এলিমেন্টটি বাদ দিন।

ক্যাশ সীমা : বিভিন্ন ক্যাশ সীমা প্রযোজ্য, যেমন নাম ও মানের আকার, মোট ক্যাশের সংখ্যা, একটি ক্যাশে থাকা আইটেমের সংখ্যা এবং মেয়াদোত্তীর্ণতা।

অন্তর্নিহিত ডেটা স্টোর সম্পর্কে আরও জানতে, ক্যাশ ইন্টারনালস দেখুন। ক্যাশ কনফিগার করা সম্পর্কে আরও জানতে, এনভায়রনমেন্ট ক্যাশ তৈরি এবং সম্পাদনা দেখুন।

ক্যাশ এনক্রিপশন সম্পর্কে

পাবলিক ক্লাউডের জন্য এজ: ক্যাশে শুধুমাত্র PCI এবং HIPAA- সক্ষম সংস্থাগুলিতে এনক্রিপ্ট করা হয়। সেই সংস্থাগুলির জন্য এনক্রিপশন সংস্থা প্রোভিশনিংয়ের সময় কনফিগার করা হয়।

ত্রুটি কোড

এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি যখন ঘটে
policies.populatecache.EntryCannotBeCached 500 একটি এন্ট্রি ক্যাশে করা যাবে না. বার্তা অবজেক্টটি ক্যাশে করা হচ্ছে এমন একটি ক্লাসের উদাহরণ নয় যা সিরিয়ালাইজেবল।

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

ত্রুটির নাম কারণ ঠিক করুন
InvalidCacheResourceReference PopulateCache নীতিতে <CacheResource> উপাদানটি এমন একটি নামে সেট করা হলে এই ত্রুটিটি ঘটে যা পরিবেশে যেখানে API প্রক্সি স্থাপন করা হচ্ছে সেখানে বিদ্যমান নেই।
CacheNotFound <CacheResource> উপাদানে নির্দিষ্ট করা ক্যাশে বিদ্যমান নেই।

ফল্ট ভেরিয়েবল

যখন এই নীতি একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।

ভেরিয়েবল যেখানে উদাহরণ
fault.name=" fault_name " fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। fault.name = "EntryCannotBeCached"
populatecache. policy_name .failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। populatecache.POP-CACHE-1.failed = true

উদাহরণ ত্রুটি প্রতিক্রিয়া

{
  "fault": {
    "faultstring": "[entry] can not be cached. Only serializable entries are cached.",
    "detail": {
      "errorcode": "steps.populatecache.EntryCannotBeCached"
    }
  }
}

উদাহরণ দোষ নিয়ম

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