আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
ব্যাকএন্ড রিসোর্স থেকে ডেটা ক্যাশে করে, রিসোর্সে অনুরোধের সংখ্যা কমিয়ে দেয়। যেহেতু অ্যাপগুলি একই ইউআরআই-তে অনুরোধ করে, আপনি সেই অনুরোধগুলিকে ব্যাকএন্ড সার্ভারে ফরোয়ার্ড করার পরিবর্তে ক্যাশে করা প্রতিক্রিয়াগুলি ফিরিয়ে দিতে এই নীতিটি ব্যবহার করতে পারেন। ResponseCache নীতি কম লেটেন্সি এবং নেটওয়ার্ক ট্রাফিকের মাধ্যমে আপনার API এর কর্মক্ষমতা উন্নত করতে পারে।
আপনার API দ্বারা ব্যবহৃত ব্যাকএন্ড ডেটা শুধুমাত্র পর্যায়ক্রমে আপডেট করা হলে আপনি সম্ভবত ResponseCache সবচেয়ে উপযোগী পাবেন। উদাহরণস্বরূপ, কল্পনা করুন যে আপনার কাছে একটি API আছে যা প্রতি দশ মিনিটে শুধুমাত্র আবহাওয়া প্রতিবেদনের ডেটা রিফ্রেশ করে। রিফ্রেশের মধ্যে ক্যাশে করা প্রতিক্রিয়াগুলি ফেরত দিতে ResponseCache ব্যবহার করে, আপনি ব্যাকএন্ডে পৌঁছানোর অনুরোধের সংখ্যা হ্রাস করতে পারেন। এটি নেটওয়ার্ক হপের সংখ্যাও হ্রাস করে।
সাধারণ উদ্দেশ্যে স্বল্প-মেয়াদী ক্যাশিংয়ের জন্য, পপুলেট ক্যাশে নীতি ব্যবহার করে বিবেচনা করুন। সেই নীতিটি লুকআপ ক্যাশে নীতি (ক্যাশে এন্ট্রি পড়ার জন্য) এবং অবৈধ ক্যাশে নীতি (অকার্যকর এন্ট্রিগুলির জন্য) এর সাথে ব্যবহার করা হয়।
প্রতিক্রিয়া ক্যাশে নীতির একটি ভূমিকার জন্য এই ভিডিওটি দেখুন৷
নমুনা
10 মিনিটের ক্যাশে
এই নমুনা দেখায় কিভাবে ক্যাশে করা প্রতিক্রিয়া 10 মিনিটের জন্য রাখা যায়।
কল্পনা করুন যে আপনার নিম্নলিখিত URL এ একটি API আছে:
http://{org_name}-test.apigee.net/weather/forecastrss?w=23424778
আপনি একটি ক্যাশে কী হিসাবে ক্যোয়ারী প্যারামিটার w
ব্যবহার করছেন। Apigee Edge ক্যোয়ারী প্যারামিটার w
এর মান চেক করে যখনই একটি অনুরোধ আসে। যদি একটি বৈধ (অর্থাৎ মেয়াদ শেষ না হওয়া) প্রতিক্রিয়া ক্যাশে উপস্থিত থাকে, তাহলে ক্যাশে প্রতিক্রিয়া বার্তাটি অনুরোধকারী ক্লায়েন্টকে ফেরত দেওয়া হয়।
এখন কল্পনা করুন যে আপনার কাছে নিম্নরূপ একটি রেসপন্সক্যাশ নীতি কনফিগার করা আছে।
<ResponseCache name="ResponseCache"> <CacheKey> <KeyFragment ref="request.queryparam.w" /> </CacheKey> <ExpirySettings> <TimeoutInSeconds>600</TimeoutInSeconds> </ExpirySettings> </ResponseCache>
প্রথমবার API প্রক্সি নিম্নলিখিত URL-এর জন্য একটি অনুরোধ বার্তা পায়, প্রতিক্রিয়া ক্যাশে করা হয়। 10 মিনিটের মধ্যে দ্বিতীয় অনুরোধে, একটি ক্যাশে লুকআপ ঘটে -- ক্যাশে করা প্রতিক্রিয়া ব্যাকএন্ড পরিষেবাতে ফরোয়ার্ড করা কোনো অনুরোধ ছাড়াই অ্যাপে ফেরত দেওয়া হয়।
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 নীতিটি কল্পনা করুন৷ মনে রাখবেন যে বাইপাস-ক্যাশ শর্তটি সত্য হিসাবে সেট করা আছে।
<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 | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name
বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
---|---|
উপস্থিতি | ঐচ্ছিক |
টাইপ | স্ট্রিং |
<CacheKey> উপাদান
ক্যাশে সংরক্ষিত ডেটার একটি অংশে একটি অনন্য পয়েন্টার কনফিগার করে।
ক্যাশে কীগুলি 2 KB আকারে সীমাবদ্ধ৷
<CacheKey> <Prefix>string</Prefix> <KeyFragment ref="variable_name" /> <KeyFragment>literal_string</KeyFragment> </CacheKey>
ডিফল্ট: | N/A |
উপস্থিতি: | প্রয়োজন |
প্রকার: | N/A |
<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>
এর সাথে ব্যবহার করেন। আরও তথ্যের জন্য, ক্যাশে কীগুলির সাথে কাজ করা দেখুন।
<CacheLookupTimeoutInSeconds> উপাদান
সেকেন্ডের সংখ্যা নির্দিষ্ট করে যার পরে একটি অসফল ক্যাশে লুকআপ ক্যাশে মিস বলে বিবেচিত হবে৷ যদি এটি ঘটে, ক্যাশে-মিস পাথ বরাবর প্রবাহ পুনরায় শুরু হয়।
<CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>
ডিফল্ট: | 30 |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | পূর্ণসংখ্যা |
<ক্যাশরিসোর্স> উপাদান
ক্যাশে নির্দিষ্ট করে যেখানে বার্তা সংরক্ষণ করা উচিত। অন্তর্ভুক্ত শেয়ার করা ক্যাশে ব্যবহার করতে এই উপাদানটি বাদ দিন। আপনি যদি ক্যাশে থাকা এন্ট্রিগুলি প্রশাসনিকভাবে পরিষ্কার করতে সক্ষম হতে চান তবে আপনাকে নামের দ্বারা একটি CacheResource উল্লেখ করা উচিত। সে সম্পর্কে আরও জানতে, ক্যাশে দেখুন।
<CacheResource>cache_to_use</CacheResource>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
ক্যাশে কনফিগার করার বিষয়ে আরও জানতে, একটি পরিবেশ ক্যাশে তৈরি এবং সম্পাদনা দেখুন।
<CacheKey>/<KeyFragment> উপাদান
একটি মান নির্দিষ্ট করে যা ক্যাশে কী-তে অন্তর্ভুক্ত করা উচিত, ক্যাশে করা প্রতিক্রিয়াগুলির সাথে মিলিত অনুরোধগুলির জন্য একটি নামস্থান তৈরি করে৷
<KeyFragment ref="variable_name"/> <KeyFragment>literal_string</KeyFragment>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | N/A |
এটি একটি কী (একটি স্ট্যাটিক নাম যা আপনি প্রদান করেন) বা একটি মান (একটি পরিবর্তনশীল উল্লেখ করে একটি গতিশীল এন্ট্রি সেট) হতে পারে। ক্যাশে কী তৈরি করতে সমস্ত নির্দিষ্ট টুকরো একত্রিত করা হয় (প্লাস উপসর্গ)।
<KeyFragment>apiAccessToken</KeyFragment> <KeyFragment ref="request.queryparam.client_id" />
আপনি <Prefix>
এবং <Scope>
এর সাথে একত্রে <KeyFragment>
উপাদান ব্যবহার করেন। আরও তথ্যের জন্য, ক্যাশে কীগুলির সাথে কাজ করা দেখুন।
গুণাবলী
বৈশিষ্ট্য | টাইপ | ডিফল্ট | প্রয়োজন | বর্ণনা |
---|---|---|---|---|
রেফ | স্ট্রিং | না | যে ভেরিয়েবল থেকে মান পেতে হবে। এই উপাদানটিতে একটি আক্ষরিক মান থাকলে ব্যবহার করা উচিত নয়। |
<CacheKey>/<Prefix> উপাদান
ক্যাশে কী উপসর্গ হিসাবে ব্যবহার করার জন্য একটি মান নির্দিষ্ট করে।
<Prefix>prefix_string</Prefix>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
যখন আপনি একটি <Scope>
-গণিত মানের পরিবর্তে আপনার নিজস্ব মান নির্দিষ্ট করতে চান তখন <Scope>
-এর পরিবর্তে এই মানটি ব্যবহার করুন। যদি সংজ্ঞায়িত করা হয়, <Prefix>
ক্যাশে লিখিত এন্ট্রিগুলির জন্য ক্যাশ কী মান পূর্বে-প্রেপেন্ড করে। একটি <Prefix>
উপাদান মান একটি <Scope>
উপাদান মান ওভাররাইড করে।
আপনি <CacheKey>
এবং <Scope>
এর সাথে একত্রে <Prefix>
উপাদানটি ব্যবহার করেন। আরও তথ্যের জন্য, ক্যাশে কীগুলির সাথে কাজ করা দেখুন।
<ErrorResponse বাদ দিন> উপাদান
বর্তমানে, ডিফল্টরূপে, এই নীতি যেকোনো সম্ভাব্য স্ট্যাটাস কোড সহ HTTP প্রতিক্রিয়া ক্যাশে করে। এর মানে সাফল্য এবং ত্রুটি উভয় প্রতিক্রিয়াই ক্যাশে করা হয়েছে। উদাহরণস্বরূপ, 2xx এবং 3xx উভয় স্ট্যাটাস কোড সহ প্রতিক্রিয়াগুলি ডিফল্টরূপে ক্যাশ করা হয়।
আপনি যদি HTTP এরর স্ট্যাটাস কোড সহ টার্গেট রেসপন্স ক্যাশে করতে না চান তবে এই উপাদানটিকে true
হিসাবে সেট করুন; শুধুমাত্র 200 থেকে 205 পর্যন্ত স্ট্যাটাস কোড সহ প্রতিক্রিয়াগুলি ক্যাশে করা হবে যদি এই উপাদানটি সত্য হয়। এইগুলিই একমাত্র HTTP স্ট্যাটাস কোড যা এজকে "সাফল্য" কোড হিসাবে গণ্য করে এবং আপনি এই অ্যাসোসিয়েশনটি পরিবর্তন করতে পারবেন না।
প্রতিক্রিয়া ক্যাশে প্যাটার্নের আলোচনার জন্য যেখানে এই উপাদানটি দরকারী, এই সম্প্রদায় পোস্টটি দেখুন।
দ্রষ্টব্য: ভবিষ্যতের রিলিজে (নির্ধারণ করা হবে), এই উপাদানটির ডিফল্ট সেটিং সত্যে পরিবর্তিত হবে। বিস্তারিত জানার জন্য 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>
ডিফল্ট: | N/A |
উপস্থিতি: | প্রয়োজন |
প্রকার: | N/A |
<ExpirySettings> /<ExpiryDate> উপাদান
একটি ক্যাশে এন্ট্রির মেয়াদ শেষ হওয়ার তারিখ নির্দিষ্ট করে। mm-dd-yyyy
ফর্মটি ব্যবহার করুন। উপস্থিত হলে, এই উপাদানটির ভাইবোন, <TimeoutInSeconds>
, ওভাররাইড করে <ExpiryDate>
।
<ExpirySettings> <ExpiryDate ref="{date_variable}">expiration_date</ExpiryDate> </ExpirySettings>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
গুণাবলী
<ExpiryDate ref="" />
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
রেফ | যে ভেরিয়েবল থেকে মান পেতে হবে। এই উপাদানটিতে একটি আক্ষরিক মান থাকলে ব্যবহার করা উচিত নয়। | N/A | ঐচ্ছিক | স্ট্রিং |
<Expiry Settings>/<TimeOfDay> উপাদান
দিনের সময় যেখানে একটি ক্যাশে এন্ট্রির মেয়াদ শেষ হওয়া উচিত। hh:mm:ss
ফর্মটি ব্যবহার করুন। উপস্থিত হলে, এই উপাদানটির ভাইবোন, <TimeoutInSeconds>
, ওভাররাইড করে <TimeOfDay>
।
HH:mm:ss ফরম্যাটে দিনের সময় লিখুন, যেখানে HH 24-ঘণ্টার ঘড়িতে ঘন্টা উপস্থাপন করে। উদাহরণস্বরূপ, 14:30:00 বিকাল 2:30 এর জন্য।
দিনের সময়ের জন্য, কোডটি কোথায় চলছে তার উপর নির্ভর করে ডিফল্ট লোকেল এবং সময় অঞ্চল পরিবর্তিত হবে (যা আপনি নীতি কনফিগার করার সময় জানা যায় না)। আপনার লোকেল কনফিগার করার তথ্যের জন্য, একটি পরিবেশ ক্যাশে তৈরি এবং সম্পাদনা দেখুন।
<ExpirySettings> <TimeOfDay ref="time_variable">expiration_time</TimeOfDay> </ExpirySettings>
ডিফল্ট: | N/A |
উপস্থিতি: | ঐচ্ছিক |
প্রকার: | স্ট্রিং |
গুণাবলী
বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি | টাইপ |
---|---|---|---|---|
রেফ | মেয়াদ শেষ হওয়ার সময়ের মান সহ পরিবর্তনশীল। | N/A | ঐচ্ছিক | স্ট্রিং |
<ExpirySettings>/<TimeoutInSec> উপাদান
সেকেন্ডের সংখ্যা যার পরে একটি ক্যাশে এন্ট্রির মেয়াদ শেষ হওয়া উচিত।