ResponseCache নীতি

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

ব্যাকএন্ড রিসোর্স থেকে ডেটা ক্যাশে করে, এর ফলে রিসোর্সে পাঠানো অনুরোধের সংখ্যা কমে যায়। যেহেতু অ্যাপ একই URI-তে অনুরোধ করে, তাই আপনি ব্যাকএন্ড সার্ভারে সেই অনুরোধ ফরওয়ার্ড করার পরিবর্তে ক্যাশে করা উত্তর রিটার্ন করতে এই নীতি ব্যবহার করতে পারেন। ResponseCache নীতি আপনার API-এর পারফর্ম্যান্স উন্নত করতে পারে। এটি ল্যাটেন্সি ও নেটওয়ার্ক ট্রাফিক কম করে।

আপনার API-এর ব্যাকএন্ড ডেটা শুধুমাত্র নির্দিষ্ট সময় অন্তর আপডেট করা হলে, ResponseCache আপনার কাছে সবচেয়ে বেশি উপযোগী বলে মনে হবে। যেমন, ধরুন আপনার কাছে এমন একটি API আছে যা আবহাওয়ার রিপোর্ট সংক্রান্ত ডেটা দেখায় এবং এটি প্রতি দশ মিনিট অন্তর রিফ্রেশ করা হয়। রিফ্রেশ করার মধ্যে ক্যাশ করা উত্তর রিটার্ন করার জন্য ResponseCache ব্যবহার করে, আপনি ব্যাকএন্ডে পৌঁছানো অনুরোধের সংখ্যা কমাতে পারবেন। এছাড়াও, এটি নেটওয়ার্ক হপের সংখ্যা কমায়।

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

রেসপন্স ক্যাশে নীতি সম্পর্কে জানতে এই ভিডিওটি দেখুন।

নমুনা

১০-মিনিটের ক্যাশে

এই নমুনা থেকে বোঝা যায় যে কীভাবে ১০ মিনিট ক্যাশে করা উত্তর রাখা যায়।

ধরে নিন যে আপনার কাছে নিম্নলিখিত URL-এ একটি API আছে:

http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778

আপনি w কোয়েরি প্যারামিটারকে ক্যাশে কী হিসেবে ব্যবহার করছেন। কোনও অনুরোধ পেলে Apigee Edge কোয়েরি প্যারামিটারের w ভ্যালু চেক করে। ক্যাশেতে কোনও বৈধ (অর্থাৎ, মেয়াদ ফুরিয়ে যায়নি) উত্তর থাকলে, অনুরোধকারী ক্লায়েন্টকে ক্যাশে করা উত্তর মেসেজটি ফেরত পাঠানো হয়।

এখন ধরে নিন যে আপনার ResponseCache নীতি নিম্নলিখিতভাবে কনফিগার করা আছে।

<ResponseCache name="ResponseCache">
    <CacheKey>
        <KeyFragment ref="request.queryparam.w" />
    </CacheKey>
    <ExpirySettings>
        <TimeoutInSeconds>600</TimeoutInSeconds>
    </ExpirySettings>
</ResponseCache>

API প্রক্সি নিম্নলিখিত URL-এর জন্য প্রথমবার কোনও অনুরোধ মেসেজ পেলে, উত্তরটি ক্যাশে করা হয়। ১০ মিনিটের মধ্যে দ্বিতীয় অনুরোধ করা হলে, ক্যাশে লুক-আপ হয় -- ব্যাকএন্ড সার্ভিসে কোনও অনুরোধ ফরওয়ার্ড না করেই ক্যাশে করা উত্তর অ্যাপে ফেরত পাঠানো হয়।

http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778

ক্যাশে লুক-আপ এড়িয়ে যাওয়া

নিচের উদাহরণে দেখানো হয়েছে কীভাবে ক্যাশে লুক-আপ এড়িয়ে যাওয়া যায় এবং ক্যাশে রিফ্রেশ করা যায়। SkipCacheLookup ব্যবহার করা সম্পর্কে এই ভিডিও দেখুন।

অনুরোধের পাথে ঐচ্ছিক SkipCacheLookup কন্ডিশন (কনফিগার করা থাকলে) মূল্যায়ন করা হয়। কন্ডিশনটি সত্য হলে, ক্যাশে লুক-আপ এড়িয়ে যাওয়া হয় এবং ক্যাশে রিফ্রেশ করা হয়।

কন্ডিশনাল ক্যাশে রিফ্রেশের একটি সাধারণ ব্যবহার হল এমন একটি কন্ডিশন যা একটি নির্দিষ্ট HTTP হেডারকে সংজ্ঞায়িত করে যা কন্ডিশনকে 'সত্য' হিসেবে মূল্যায়ন করে। একটি স্ক্রিপ্টেড ক্লায়েন্ট অ্যাপ্লিকেশনকে উপযুক্ত HTTP হেডার সহ একটি অনুরোধ জমা দেওয়ার জন্য পিরিয়ডিক কনফিগার করা যেতে পারে, এর ফলে রেসপন্স ক্যাশে রিফ্রেশ হয়।

যেমন, নিম্নলিখিত URL-এ API-তে কল করার কথা ভাবুন:

'http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778' -H "bypass-cache:true"

এখন সেই প্রক্সিতে কনফিগার করা নিম্নলিখিত ResponseCache নীতিটি কল্পনা করুন। মনে রাখবেন যে bypass-cache কন্ডিশন true হিসেবে সেট করা আছে।

<ResponseCache name="ResponseCache">
    <CacheKey>
        <KeyFragment ref="request.queryparam.w" />
    </CacheKey>
    <!-- Explicitly refresh the cached response -->
    <SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
    <ExpirySettings>
        <TimeoutInSeconds>600</TimeoutInSeconds>
    </ExpirySettings>
</ResponseCache>

শর্তাবলী সম্পর্কে আরও জানতে, ফ্লো ভেরিয়েবল ও শর্তাবলী দেখুন।

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

এলিমেন্ট রেফারেন্সে নীতির এলিমেন্ট ও অ্যাট্রিবিউট বর্ণনা করা হয়।

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache 1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" />
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSeconds ref="flow.variable.here">300</TimeoutInSeconds>
    </ExpirySettings>
    <CacheResource>cache_to_use</CacheResource>
    <CacheLookupTimeoutInSeconds/>
    <ExcludeErrorResponse/>
    <SkipCacheLookup/>
    <SkipCachePopulation/>
    <UseAcceptHeader/>
    <UseResponseCacheHeaders/>
</ResponseCache>

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

<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">

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

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
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> ক্যাশে স্টোর করা প্রতিটি ডেটার নাম কনস্ট্রাক্ট করে। কী প্রায়ই এন্টিটি হেডার বা কোয়েরি প্যারামিটার থেকে পাওয়া ভ্যালু ব্যবহার করে সেট করা হয়। সেইসব ক্ষেত্রে, আপনাকে এলিমেন্টের ref অ্যাট্রিবিউটে কী ভ্যালু সহ ভেরিয়েবল উল্লেখ করতে হবে।

রানটাইমে, <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> এলিমেন্ট ব্যবহার করেন। আরও তথ্যের জন্য, ক্যাশে কী নিয়ে কাজ করা দেখুন।

<CacheLookupTimeoutInSeconds> এলিমেন্ট

কত সেকেন্ড পরে ক্যাশে খোঁজা না পেলে তা ক্যাশে মিস হিসেবে গণ্য করা হবে তা উল্লেখ করে। এটি ঘটলে, ক্যাশে-মিস পাথ ধরে ফ্লো আবার শুরু হয়।

<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>

ডিফল্ট:

৩০

উপস্থিতি:

ঐচ্ছিক

টাইপ:

পূর্ণসংখ্যা

<CacheResource> এলিমেন্ট

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

<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> এলিমেন্ট ব্যবহার করেন। আরও তথ্যের জন্য, ক্যাশে কী নিয়ে কাজ করা দেখুন।

<ExcludeErrorResponse> এলিমেন্ট

বর্তমানে, ডিফল্ট হিসেবে, এই নীতি যেকোনও সম্ভাব্য স্ট্যাটাস কোড সহ HTTP উত্তর ক্যাশে করে। এর অর্থ হল, সফল ও ব্যর্থ, উভয় ধরনের উত্তরই ক্যাশে করা হয়। যেমন, 2xx ও 3xx, দুটি স্ট্যাটাস কোড সহ উত্তর ডিফল্ট হিসেবে ক্যাশে করা হয়।

আপনি HTTP সমস্যার স্ট্যাটাস কোড সহ টার্গেট প্রতিক্রিয়া ক্যাশে করতে না চাইলে এই এলিমেন্টটি true হিসেবে সেট করুন; এই এলিমেন্টটি true হলে, শুধুমাত্র 200 থেকে 205 পর্যন্ত স্ট্যাটাস কোড সহ প্রতিক্রিয়া ক্যাশে করা হবে। এইসব HTTP স্ট্যাটাস কোডই হল একমাত্র কোড যেগুলিকে Edge "সফল" কোড হিসেবে গণ্য করে এবং আপনি এই অ্যাসোসিয়েশন পরিবর্তন করতে পারবেন না।

এই এলিমেন্টটি কাজে লাগে এমন রেসপন্স ক্যাশে প্যাটার্ন সম্পর্কে আলোচনা পেতে, এই কমিউনিটি পোস্ট দেখুন।

মনে রাখবেন: ভবিষ্যতে রিলিজ করা কোনও ভার্সনে (এখনও নির্ধারণ করা হয়নি), এই এলিমেন্টের ডিফল্ট সেটিং পরিবর্তন করে 'চালু' করা হবে। বিবরণের জন্য Apigee রিলিজ নোট দেখুন।

<ExcludeErrorResponse>true</ExcludeErrorResponse>

ডিফল্ট:

মিথ্যা

উপস্থিতি:

ঐচ্ছিক

টাইপ:

বুলিয়ান

<ExpirySettings> এলিমেন্ট

ক্যাশে এন্ট্রি কখন মেয়াদোত্তীর্ণ হবে তা নির্দিষ্ট করে। উপস্থিত থাকলে, <TimeoutInSeconds> <TimeOfDay> ও <ExpiryDate>, দুটিকেই ওভাররাইড করে।

<ExpirySettings>
  <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
  <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
  <ExpiryDate ref="date_variable">expiration_date</ExpiryDate>
</ExpirySettings>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

প্রয়োজনীয়

টাইপ:

প্রযোজ্য নয়

<ExpirySettings>/<ExpiryDate> এলিমেন্ট

ক্যাশে এন্ট্রি যে তারিখে মেয়াদোত্তীর্ণ হবে তা নির্দিষ্ট করে। mm-dd-yyyy ফর্মটি ব্যবহার করুন। উপস্থিত থাকলে, এই এলিমেন্টের সিবলিং, <TimeoutInSeconds>, ওভাররাইড করে <ExpiryDate>।

<ExpirySettings>
    <ExpiryDate ref="{date_variable}">expiration_date</ExpiryDate>
</ExpirySettings>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

টাইপ:

স্ট্রিং

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

<ExpiryDate ref="" />
অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি ধরন
ref

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

প্রযোজ্য নয় ঐচ্ছিক স্ট্রিং

<ExpirySettings>/<TimeOfDay> এলিমেন্ট

দিনের যে সময়ে কোনও ক্যাশে এন্ট্রি মেয়াদ শেষ হয়ে যাবে। hh:mm:ss ফর্মটি ব্যবহার করুন। উপস্থিত থাকলে, এই এলিমেন্টের সিবলিং, <TimeoutInSeconds>, ওভাররাইড করে <TimeOfDay>।

HH:mm:ss ফর্ম্যাটে দিনের সময় লিখুন, যেখানে HH হল ২৪-ঘণ্টার ঘড়িতে ঘণ্টা। যেমন, দুপুর ২:৩০-এর জন্য ১৪:৩০:০০।

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

<ExpirySettings>
    <TimeOfDay ref="time_variable">expiration_time</TimeOfDay>
</ExpirySettings>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

টাইপ:

স্ট্রিং

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

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি ধরন
ref মেয়াদ শেষ হওয়ার সময় সংক্রান্ত ভ্যালু সহ ভেরিয়েবল। প্রযোজ্য নয় ঐচ্ছিক স্ট্রিং

<ExpirySettings>/<TimeoutInSec> এলিমেন্ট

কত সেকেন্ড পরে কোনও ক্যাশে এন্ট্রি এক্সপায়ার হয়ে যাবে।

<ExpirySettings>/<TimeoutInSeconds> এলিমেন্ট

কত সেকেন্ড পরে কোনও ক্যাশে এন্ট্রি এক্সপায়ার হয়ে যাবে। উপস্থিত থাকলে, এই এলিমেন্ট এর সিবলিং, <TimeOfDay> এবং <ExpiryDate>-কে ওভাররাইড করে।

<ExpirySettings>
    <TimeoutInSeconds ref="duration_variable">seconds_until_expiration</TimeoutInSeconds>
</ExpirySettings>

মনে রাখবেন: ref, duration_variable থেকে কোনও ভ্যালু না পেলে ব্যবহার করার জন্য একটি ডিফল্ট টাইমআউট ভ্যালু দিন।

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

টাইপ:

স্ট্রিং

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

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি ধরন
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
.

<SkipCacheLookup> এলিমেন্ট

এমন একটি এক্সপ্রেশনকে সংজ্ঞায়িত করে যা রানটাইমে মূল্যায়ন করে দেখা হয় এবং সেটি সত্য হলে, তা নির্দিষ্ট করে যে ক্যাশে লুক-আপ এড়িয়ে যাওয়া উচিত এবং ক্যাশে রিফ্রেশ করা উচিত। SkipCacheLookup ব্যবহার করা সম্পর্কে এই ভিডিও দেখুন।

<SkipCacheLookup>variable_condition_expression</SkipCacheLookup>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

টাইপ:

স্ট্রিং

নিচের উদাহরণে, ইনকামিং হেডারে bypass-cache ভেরিয়েবল true হিসেবে সেট করা থাকলে, ক্যাশে লুক-আপ এড়িয়ে যাওয়া হয় এবং ক্যাশে রিফ্রেশ করা হয়।

<SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>

<SkipCachePopulation> এলিমেন্ট

এমন একটি এক্সপ্রেশনকে সংজ্ঞায়িত করে যা রানটাইমে মূল্যায়ন করে দেখা হয় এবং সেটি সত্য হলে, তা নির্দিষ্ট করে যে ক্যাশেতে লেখা এড়িয়ে যাওয়া উচিত। SkipCachePopulation ব্যবহারের ব্যাপারে এই ভিডিও দেখুন।

<SkipCachePopulation>variable_condition_expression</SkipCachePopulation>

ডিফল্ট:

প্রযোজ্য নয়

উপস্থিতি:

ঐচ্ছিক

টাইপ:

স্ট্রিং

যেমন, নিম্নলিখিত ক্ষেত্রে, উত্তরের স্ট্যাটাস কোড 400 বা তার বেশি হলে, ক্যাশে লেখার প্রসেস এড়িয়ে যাওয়া হবে:

<SkipCachePopulation>response.status.code >= 400</SkipCachePopulation>

<UseAcceptHeader> এলিমেন্ট

true-এ সেট করা থাকলে, রেসপন্স ক্যাশে এন্ট্রির ক্যাশে কী, রেসপন্স Accept হেডার থেকে পাওয়া ভ্যালুর সাথে অ্যাপেন্ড করা হবে।

ক্যাশে কী গণনা করার সময় Edge Accept, Accept-Encoding, Accept-Language এবং Accept-Charset রিকোয়েস্ট হেডার ব্যবহার করে। এই পদ্ধতি ক্লায়েন্টকে এমন মিডিয়া টাইপ পেতে বাধা দেয় যা সে চায়নি।

যেমন, একই URL থেকে দুটি অনুরোধ এসেছে বলে ধরে নিন, যেখানে প্রথম অনুরোধটি gzip গ্রহণ করে এবং দ্বিতীয়টি করে না। প্রথম অনুরোধটি ক্যাশে করা হবে এবং ক্যাশে করা এন্ট্রিটি (সম্ভবত) একটি gzip করা উত্তর হবে। দ্বিতীয় অনুরোধটি ক্যাশে করা ভ্যালু পড়বে এবং তারপরে এমন ক্লায়েন্টকে gzip করা এন্ট্রি ফেরত দিতে পারে যেটি gzip পড়তে পারে না।

আরও জানতে ক্যাশে কী কনফিগার করা দেখুন।

<UseAcceptHeader>false</UseAcceptHeader>

ডিফল্ট:

মিথ্যা

উপস্থিতি:

ঐচ্ছিক

টাইপ:

বুলিয়ান

<UseResponseCacheHeaders> এলিমেন্ট

ক্যাশেতে থাকা উত্তরের "লাইভ থাকার সময়" (TTL) সেট করার সময় HTTP রেসপন্স হেডার বিবেচনা করতে true-এ সেট করুন। এটি সত্য হলে, Edge নিম্নলিখিত রেসপন্স হেডারের ভ্যালু বিবেচনা করে, <ExpirySettings>-এর সেট করা ভ্যালুর সাথে তুলনা করে টাইম টু লিভ সেট করে:

  • Cache-Control s-maxage
  • Cache-Control max-age
  • Expires

আরও বিবরণের জন্য ক্যাশে এন্ট্রি এক্সপায়ার হওয়ার সময়সীমা সেট করা দেখুন।

<UseResponseCacheHeaders>false</UseResponseCacheHeaders>

ডিফল্ট:

মিথ্যা

উপস্থিতি:

ঐচ্ছিক

টাইপ:

বুলিয়ান

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

প্রতিটি ক্যাশে করা অবজেক্টের সর্বাধিক সাইজ হল ২৫৬ কেবি। (Edge কীভাবে ক্যাশে প্রসেস করে সেই সম্পর্কে বিস্তারিত তথ্য পেতে, ক্যাশে ইন্টার্নাল দেখুন।)

ResponseCache নীতিতে কনফিগারেশনের মাধ্যমে, আপনি Edge-কে ক্যাশে এন্ট্রিয়ের মেয়াদ শেষ হওয়া এবং ক্যাশে কী সেট করার সময় HTTP response হেডার অন্তর্ভুক্ত করতে বলতে পারেন। এই বিভাগে, ক্যাশে এক্সপায়ারেশন ও ক্যাশে কী ম্যানেজ করার জন্য আপনি কীভাবে হেডার সহ নীতি ব্যবহার করতে পারবেন তা বর্ণনা করা হয়েছে।

ResponseCache নীতি সহ Edge কীভাবে উত্তর হেডারের ব্যাপারে ব্যবস্থা নেয় সেই সম্পর্কে আরও জানতে, HTTP উত্তর হেডারের জন্য সহায়তা দেখুন।

ক্যাশে এন্ট্রির মেয়াদ শেষ হওয়ার সময়সীমা সেট করা

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

রেসপন্স হেডার ব্যবহার করতে, <UseResponseCacheHeaders> এলিমেন্টের ভ্যালু true হিসেবে সেট করুন। এই সেটিংয়ের ফলে Edge, উত্তরের হেডার বিবেচনা করে, <ExpirySettings>-এর সেট করা ভ্যালুর সাথে তুলনা করে এবং তারপরে দুটির মধ্যে সবচেয়ে কম ভ্যালু ব্যবহার করে। উত্তরের হেডার বিবেচনা করার সময়, Edge নিম্নলিখিত বর্ণনা অনুযায়ী উপলভ্য ভ্যালু বেছে নেয়:

যেমন, ধরে নিন যে নিম্নলিখিত ভ্যালু সহ একটি উত্তর ক্যাশে করা হয়েছে:

  • Cache-Control s-maxage ভ্যালু নেই
  • Cache-Control max-age-এর ভ্যালু ৩০০
  • তিন দিনের মধ্যে Expires তারিখ
  • <ExpirySettings> TimeoutInSeconds ভ্যালু ৬০০।

এই ক্ষেত্রে, TTL-এর জন্য Cache-Control max-age ভ্যালু ব্যবহার করা হবে, কারণ এটি <ExpirySettings> ভ্যালুর চেয়ে কম এবং কোনও Cache-Control s-maxage ভ্যালু নেই (যা max-age-এর চেয়ে বেশি অগ্রাধিকার পায়)।

ক্যাশে কী কনফিগার করা

পপুলেট ক্যাশে নীতির মতো সাধারণ উদ্দেশ্যমূলক ক্যাশে নীতির মতো, ResponseCache-এর সাথে আপনি <CacheKey> এবং <Scope> এলিমেন্ট ব্যবহার করে ক্যাশে এন্ট্রির জন্য ক্যাশে কী তৈরি করা কনফিগার করেন। এছাড়াও, ResponseCache-এর সাহায্যে আপনি কী ভ্যালুর সাথে রেসপন্স Accept হেডার যোগ করে আরও অর্থপূর্ণ ক্যাশে কী তৈরি করতে পারবেন।

ক্যাশে কী কনফিগার করা সম্পর্কে সাধারণ তথ্য পেতে, ক্যাশে কী নিয়ে কাজ করা দেখুন। Accept হেডার ব্যবহার করা সম্পর্কিত তথ্যের জন্য, <UseAcceptHeader> দেখুন।

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

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

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

ResponseCache নীতি এক্সিকিউট করা হলে, নিম্নলিখিত আগে থেকে সংজ্ঞায়িত ফ্লো ভেরিয়েবল পপুলেট করা হয়। ফ্লো ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।

ভেরিয়েবল ধরন অনুমতি বিবরণ
responsecache.{policy_name}.cachename স্ট্রিং রিড-অনলি নীতিতে ব্যবহৃত ক্যাশে ফেরত দেয়
responsecache.{policy_name}.cachekey স্ট্রিং রিড-অনলি ব্যবহৃত কী রিটার্ন করে
responsecache.{policy_name}.cachehit বুলিয়ান রিড-অনলি নীতি প্রয়োগ সফল হলে 'ট্রু'
responsecache.{policy_name}.invalidentry বুলিয়ান রিড-অনলি ক্যাশে এন্ট্রি সঠিক না হলে True

সমস্যার কোড

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

সমস্যা থাকা কোডের উপসর্গ

প্রযোজ্য নয়

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

এই নীতি কোনও রানটাইম এরর দেখায় না।

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

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

সমস্যার নাম কারণ এর সমাধান করুন
InvalidTimeout ResponseCache নীতির <CacheLookupTimeoutInSeconds> এলিমেন্ট নেগেটিভ সংখ্যায় সেট করা থাকলে, API প্রক্সি ডিপ্লয় করা যায় না।
InvalidCacheResourceReference ResponseCache নীতির <CacheResource> এলিমেন্ট এমন নামে সেট করা থাকলে এই সমস্যা হয় যা API প্রক্সি যেখানে ডেপ্লয় করা হচ্ছে সেই এনভায়রনমেন্টে নেই।
ResponseCacheStepAttachmentNotAllowedReq কোনও API প্রক্সির ফ্লোয়ের মধ্যে একাধিক অনুরোধ পাথে একই ResponseCache নীতি অ্যাটাচ করা থাকলে এই সমস্যা হয়।
ResponseCacheStepAttachmentNotAllowedResp কোনও API প্রক্সির মধ্যে একাধিক রেসপন্স পাথে একই ResponseCache নীতি অ্যাটাচ করা থাকলে এই সমস্যা হয়।
InvalidMessagePatternForErrorCode ResponseCache নীতির মধ্যে <SkipCacheLookup> অথবা <SkipCachePopulation> এলিমেন্টে ভুল কন্ডিশন থাকলে এই সমস্যা হয়।
CacheNotFound সমস্যার মেসেজে উল্লেখ করা নির্দিষ্ট ক্যাশে যদি নির্দিষ্ট মেসেজ প্রসেসর কম্পোনেন্টে তৈরি না হয়ে থাকে, তাহলে এই সমস্যাটি হয়।

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

প্রযোজ্য নয়

সমস্যার উত্তরের উদাহরণ

প্রযোজ্য নয়

স্কিমা

প্রতিটি নীতির ধরন XML স্কিমা (.xsd) দ্বারা সংজ্ঞায়িত করা হয়। রেফারেন্সের জন্য, নীতি স্কিমা GitHub-এ উপলভ্য।