PopulateCache নীতি

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

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

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

ব্যাকএন্ড রিসোর্সের উত্তর ক্যাশে করা সম্পর্কে জানতে, উত্তর ক্যাশে করার নীতি দেখুন।

এলিমেন্ট রেফারেন্স

এই নীতিতে আপনি যেসব এলিমেন্ট কনফিগার করতে পারবেন, তার তালিকা নিচে দেওয়া হল।

<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> এলিমেন্ট

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

ক্যাশে কীয়ের সাইজ ২ কেবি পর্যন্ত সীমিত।

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

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

<CacheResource> এলিমেন্ট

মেসেজ কোথায় স্টোর করা হবে তা নির্দিষ্ট করে।

এই নীতি (এবং আপনার সংশ্লিষ্ট 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" />

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

অ্যাট্রিবিউট

অ্যাট্রিবিউট ধরন ডিফল্ট প্রয়োজনীয় বিবরণ
ref স্ট্রিং না

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

<CacheKey>/<Prefix> এলিমেন্ট

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

<Prefix>prefix_string</Prefix>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

টাইপ:

স্ট্রিং

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

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

<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 টাইম জোনে ২৪-ঘণ্টার ক্লক অনুসারে ঘণ্টা। যেমন, ১৪:৩০:০০ মানে দুপুর ২:৩০।

<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> এলিমেন্টের মানকে ওভাররাইড করে। নিচে দেওয়া এনুমেরেশনগুলি বৈধ মানের মধ্যে পড়ে।

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

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

Global

এনভায়রনমেন্টে ডেপ্লয় করা সব API প্রক্সি জুড়ে ক্যাশে কী শেয়ার করা হয়। ক্যাশে কী হল orgName __ envName __ ফর্মে আগে থেকে যোগ করা।

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

Application

API প্রক্সি নাম প্রিফিক্স হিসেবে ব্যবহার করা হয়।

orgName__envName__apiProxyName ফর্ম্যাটে ক্যাশে কী আগে থেকে যোগ করা থাকে।

Proxy

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

ক্যাশে কী, এই ফর্মের আগে যোগ করা হয় orgName__envName__apiProxyName__deployedRevisionNumber__proxyEndpointName .

Target

প্রিফিক্স হিসেবে TargetEndpoint কনফিগারেশন ব্যবহার করা হয়।

ক্যাশে কী, এই ফর্ম 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>source_variable</Source>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

প্রয়োজনীয়

টাইপ:

স্ট্রিং

ব্যবহার সংক্রান্ত নোট

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

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

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

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

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

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

সমস্যার কোড

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

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস এটি তখন ঘটে যখন
policies.populatecache.EntryCannotBeCached 500 কোনও এন্ট্রি ক্যাশে করা যাবে না। ক্যাশে করা মেসেজ অবজেক্টটি Serializable ক্লাসের ইনস্ট্যান্স নয়।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম কারণ এর সমাধান করুন
InvalidCacheResourceReference API প্রক্সি যেখানে ডেপ্লয় করা হচ্ছে সেই এনভায়রনমেন্টে <CacheResource> এলিমেন্ট না থাকলে, PopulateCache নীতিতে সেটি সেট করা হলে এই সমস্যা হয়।
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>