HTTP প্রতিক্রিয়া শিরোনাম জন্য সমর্থন

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

এই টপিকে বর্ণনা করা হয়েছে যে, আপনি যখন ResponseCache পলিসি ব্যবহার করেন, তখন Edge কীভাবে HTTP/1.1 ক্যাশিং হেডারগুলো পরিচালনা করে। Apigee Edge বর্তমানে ব্যাকএন্ড টার্গেট (অরিজিন) সার্ভার থেকে প্রাপ্ত HTTP/1.1 ক্যাশিং হেডার এবং ডিরেক্টিভগুলোর একটি উপসেট সমর্থন করে (অসমর্থিত ফিচারগুলো এই টপিকে তালিকাভুক্ত করা হয়েছে)।

এছাড়াও, কিছু নির্দিষ্ট হেডারের ক্ষেত্রে Edge সেগুলোর নির্দেশিকা অনুসারে ব্যবস্থা গ্রহণ করে। কিছু ক্ষেত্রে, এই HTTP/1.1 ক্যাশ হেডারগুলো ResponseCache পলিসিতে নির্দিষ্ট করা যেকোনো আচরণকে ওভাররাইড করে। উদাহরণস্বরূপ, যদি কোনো ব্যাকএন্ড সার্ভার থেকে Cache-Control হেডারটি ফেরত আসে, তাহলে হেডারটির s-maxage নির্দেশিকাটি পলিসির অন্যান্য এক্সপায়ারেশন সেটিংসকে ওভাররাইড করতে পারে।

হেডার সমর্থন
ক্যাশে-নিয়ন্ত্রণ ব্যাকএন্ড অরিজিন সার্ভার থেকে প্রাপ্ত প্রতিক্রিয়ার ক্ষেত্রে সমর্থিত, কিন্তু ক্লায়েন্ট অনুরোধের ক্ষেত্রে নয়। Edge নির্দেশাবলীর একটি উপসেট সমর্থন করে।
মেয়াদ শেষ সমর্থিত। পরিবর্তন করা যেতে পারে।
সত্তা ট্যাগ (ETags) If-Match এবং If-None-Match এর জন্য নির্দিষ্ট আচরণ।
If-Modified-Since GET অনুরোধের ক্ষেত্রে, বৈধ ক্যাশ এন্ট্রি বিদ্যমান থাকলেও হেডারটি অরিজিন সার্ভারে পাঠানো হয়।
অ্যাকসেপ্ট-এনকোডিং Edge আগত হেডারের উপর নির্ভর করে সংকুচিত বা অসংকুচিত প্রতিক্রিয়া পাঠায়।

ক্যাশে-নিয়ন্ত্রণ

Apigee Edge শুধুমাত্র ব্যাকএন্ড অরিজিন সার্ভার থেকে ফেরত আসা রেসপন্সের ক্ষেত্রেই Cache-Control হেডার সমর্থন করে (HTTP/1.1 স্পেক অনুযায়ী ক্লায়েন্ট রিকোয়েস্ট এবং অরিজিন সার্ভার রেসপন্স উভয় ক্ষেত্রেই Cache-Control হেডার ব্যবহার করা যায়)। অরিজিন সার্ভারের মধ্যে Apigee Edge API প্রক্সিতে সংজ্ঞায়িত টার্গেট এন্ডপয়েন্ট এবং TargetServer API কল ব্যবহার করে তৈরি করা এন্ডপয়েন্ট উভয়ই অন্তর্ভুক্ত থাকতে পারে।

ক্যাশ-কন্ট্রোল সমর্থনের সীমাবদ্ধতা

Apigee Edge, HTTP/1.1 স্পেসিফিকেশনে সংজ্ঞায়িত Cache-Control রেসপন্স হেডার সক্ষমতার একটি উপসেট সমর্থন করে। অনুগ্রহ করে নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:

  • Apigee Edge ক্লায়েন্ট অনুরোধের সাথে আসা Cache-Control হেডার সমর্থন করে না।
  • Apigee Edge শুধুমাত্র পাবলিক ক্যাশের ধারণাটি সমর্থন করে। (HTTP স্পেসিফিকেশন অনুযায়ী, Cache-Control পাবলিক (শেয়ার করা) অথবা প্রাইভেট (একক ব্যবহারকারী) হতে পারে।)
  • Apigee Edge শুধুমাত্র HTTP/1.1 স্পেসিফিকেশনের Cache-Control রেসপন্স ডিরেক্টিভগুলোর একটি উপসেট সমর্থন করে। বিস্তারিত জানতে “Support for Cache-Control response header directives” দেখুন।

Support for Cache-Control response header directives

Apigee অরিজিন সার্ভার থেকে আসা রেসপন্সের ক্ষেত্রে HTTP/1.1 স্পেসিফিকেশনের কিছু নির্দিষ্ট ডিরেক্টিভ সমর্থন করে। নিচের সারণিতে HTTP Cache-Control রেসপন্স হেডার ডিরেক্টিভের জন্য Apigee Edge-এর সমর্থন বর্ণনা করা হয়েছে।

এখানে তালিকাভুক্ত নির্দেশাবলী সম্পর্কে আরও বিস্তারিত তথ্যের জন্য, HTTP/1.1 স্পেসিফিকেশনের Cache-Control দেখুন।

ক্যাশে-নিয়ন্ত্রণ নির্দেশিকা Apigee Edge কীভাবে নির্দেশাবলী প্রক্রিয়া করে
cache-extension সমর্থিত নয়।
max-age

যদি আপনার ResponseCache পলিসিতে <UseResponseCacheHeaders> এলিমেন্টটির মান true সেট করা থাকে, তাহলে এই নির্দেশিকা দ্বারা নির্দিষ্ট করা সেকেন্ড সংখ্যা পর্যন্ত রেসপন্সটি ক্যাশ করা যেতে পারে।

এই নির্দেশিকাটি s-maxage নির্দেশিকা দ্বারা ওভাররাইড করা হয় এবং এটি Expires হেডারকে ওভাররাইড করে। এটি পলিসির <ExpirySettings> এলিমেন্ট দ্বারাও ওভাররাইড করা যেতে পারে। আরও জানতে, "ক্যাশ এন্ট্রির মেয়াদ শেষ হওয়ার সময় নির্ধারণ" এবং রেসপন্স ক্যাশ পলিসিতে <UseResponseCacheHeaders> দেখুন।

must-revalidate সমর্থিত নয়। মেয়াদ শেষ হওয়া মাত্রই Apigee Edge দ্বারা সমস্ত ক্যাশ এন্ট্রি মুছে ফেলা হয়।
no-cache

Edge অরিজিন রেসপন্সটি ক্যাশ করে রাখে, কিন্তু পরবর্তী যেকোনো ক্লায়েন্ট অনুরোধ পূরণের জন্য ব্যবহার করার আগে এটিকে অবশ্যই অরিজিন সার্ভারের সাথে পুনরায় যাচাই করে নিতে হবে। এই নিয়মটি অরিজিনকে একটি 304 Not Modified রেসপন্স ফেরত দেওয়ার অনুমতি দেয়, যা নির্দেশ করে যে রেসপন্সটি ক্যাশ থেকে ফেরত দেওয়া উচিত। এর ফলে সম্পূর্ণ রেসপন্সটি ফেরত দেওয়ার জন্য প্রয়োজনীয় প্রসেসিং বেঁচে যায়। যদি অরিজিন সার্ভার একটি সম্পূর্ণ রেসপন্স ফেরত দেয়, তবে এটি বিদ্যমান ক্যাশ এন্ট্রিটিকে প্রতিস্থাপন করে। এই নির্দেশিকার সাথে নির্দিষ্ট করা যেকোনো ফিল্ডের নাম উপেক্ষা করা হয়।

no-store সমর্থিত নয়।
no-transform সমর্থিত নয়।
private সমর্থিত নয়। এই নির্দেশটি পাওয়া গেলে, অরিজিন রেসপন্স ক্যাশ করা হয় না। যেকোনো ফিল্ডের নাম উপেক্ষা করা হয়।
proxy-revalidate সমর্থিত নয়। মেয়াদ শেষ হওয়া মাত্রই Apigee Edge দ্বারা সমস্ত ক্যাশ এন্ট্রি মুছে ফেলা হয়।
public অন্যান্য নির্দেশাবলী ভিন্ন কিছু নির্দেশ করলেও Edge অরিজিন রেসপন্সটি ক্যাশ করে রাখে। HTTP/1.1 স্পেসিফিকেশন অনুযায়ী, এই নিয়মের একমাত্র ব্যতিক্রম হলো যদি রেসপন্সটিতে একটি Authorization হেডার অন্তর্ভুক্ত থাকে।
s-maxage

যদি আপনার ResponseCache পলিসিতে <UseResponseCacheHeaders> এলিমেন্টটির মান true সেট করা থাকে, তাহলে এই নির্দেশিকা দ্বারা নির্দিষ্ট করা সেকেন্ড সংখ্যা পর্যন্ত রেসপন্সটি ক্যাশ করা যেতে পারে।

এই নির্দেশিকাটি max-age নির্দেশিকা এবং Expires হেডারকে ওভাররাইড করে। এটি পলিসির <ExpirySettings> এলিমেন্টের মাধ্যমে ওভাররাইড করা যেতে পারে। আরও জানতে, "ক্যাশ এন্ট্রির মেয়াদ নির্ধারণ" এবং রেসপন্স ক্যাশ পলিসিতে <UseResponseCacheHeaders> দেখুন।

মেয়াদ শেষ

যখন ResponseCache পলিসিতে UseResponseCacheHeaders ফ্ল্যাগটি ' true তে সেট করা থাকে, তখন Edge একটি ক্যাশ করা এন্ট্রির টাইম টু লিভ (TTL) নির্ধারণ করতে Expires হেডারটি ব্যবহার করতে পারে। এই হেডারটি একটি তারিখ/সময় নির্দিষ্ট করে, যার পরে একটি রেসপন্সের ক্যাশ এন্ট্রিকে বাসি (stale) বলে গণ্য করা হয়। এই হেডারটি সার্ভারকে একটি টাইম স্ট্যাম্পের উপর ভিত্তি করে ক্যাশ করা ভ্যালু ফেরত দেওয়ার জন্য সংকেত দিতে সাহায্য করে।

Expires হেডারের জন্য গ্রহণযোগ্য তারিখের ফরম্যাটগুলো HTTP/1.1 স্পেসিফিকেশনে বর্ণনা করা আছে। উদাহরণস্বরূপ:

মেয়াদ শেষ হবে: বৃহস্পতি, ০১ ডিসেম্বর ১৯৯৪ ১৬:০০:০০ জিএমটি

HTTP তারিখ/সময় ফরম্যাট সম্পর্কে বিস্তারিত তথ্যের জন্য, HTTP/1.1 স্পেসিফিকেশনের তারিখ/সময় ফরম্যাট অংশটি দেখুন।

Expires হেডার সম্পর্কে আরও তথ্যের জন্য, HTTP/1.1 স্পেসিফিকেশনের Header Field Definitions অংশটি দেখুন।

ই-ট্যাগ

এনটিটি ট্যাগ (ETag) হলো অনুরোধ করা কোনো রিসোর্সের সাথে যুক্ত একটি শনাক্তকারী। একটি ETag ব্যবহার করে, সার্ভার নির্ধারণ করতে পারে যে অনুরোধ করা রিসোর্স এবং এর সাথে যুক্ত ক্যাশ করা রিসোর্সটি মেলে কিনা। উদাহরণস্বরূপ, যদি রেসপন্সটি বর্তমানে ক্যাশ করা রিসোর্সের সাথে না মেলে, তবে সার্ভারটি সেটিকে পুনরায় ক্যাশ করতে পারে। আবার, ETag-গুলো মিলে গেলে সার্ভারটি ক্যাশ করা রিসোর্সটি ফেরত দিতে পারে।

যখন কোনো টার্গেট এন্ডপয়েন্ট একটি ETag সহ Edge-কে প্রতিক্রিয়া ফেরত পাঠায়, তখন Edge প্রতিক্রিয়াটির সাথে ETag-টিও ক্যাশ করে রাখে।

আপনি HTTP/1.1 স্পেসিফিকেশনের প্রোটোকল প্যারামিটার অংশে এনটিটি ট্যাগ সম্পর্কে আরও পড়তে পারেন।

যদি-ম্যাচ

If-Match রিকোয়েস্ট হেডার ব্যবহার করলে, একটি ক্যাশ করা এনটিটি তখনই আপ-টু-ডেট থাকে, যখন হেডারে থাকা ETag-টি ক্যাশ করা ETag-এর সাথে মিলে যায়। GET রিকোয়েস্ট ছাড়া অন্য যে কোনো রিকোয়েস্ট, যেগুলোতে If-Match হেডার উল্লেখ করা থাকে, সেগুলোকে অরিজিন সার্ভারে পাঠিয়ে দেওয়া হয়, যাতে অরিজিনের যেকোনো ক্যাশিং ফ্যাসিলিটি রিকোয়েস্টটি প্রসেস করার সুযোগ পায়।

আপনি HTTP/1.1 স্পেসিফিকেশনের হেডার ফিল্ড ডেফিনিশন-If-Match সম্পর্কে আরও পড়তে পারেন।

যদি Edge কোনো ক্লায়েন্টের কাছ থেকে একটি If-Match হেডারসহ ইনবাউন্ড GET অনুরোধ পায়:

যদি তারপর
If-Match হেডারটি এক বা একাধিক ETag নির্দিষ্ট করে।
  1. Apigee Edge নির্দিষ্ট রিসোর্সের জন্য যেকোনো মেয়াদোত্তীর্ণ নয় এমন ক্যাশ এন্ট্রি পুনরুদ্ধার করে এবং সেই ক্যাশ করা এন্ট্রিগুলিতে থাকা যেকোনো শক্তিশালী ETag-কে If-Match হেডারে নির্দিষ্ট করা ট্যাগগুলির সাথে তুলনা করে।
  2. যদি কোনো মিল খুঁজে পাওয়া যায়, তাহলে ক্যাশ এন্ট্রিটি ফেরত দেওয়া হয়।
  3. অন্যথায়, অনুরোধটি মূল সার্ভারে পাঠানো হয়।
If-Match হেডার "*" নির্দিষ্ট করে। অনুরোধটি অরিজিন সার্ভারে পাঠানো হয়, যাতে অরিজিনের যেকোনো ক্যাশিং সুবিধা অনুরোধটি প্রক্রিয়া করার সুযোগ পায়।
একই অনুরোধ URI সহ একটি ক্যাশে এন্ট্রি পাওয়া গেছে, কিন্তু এতে শুধুমাত্র দুর্বল ETag রয়েছে। The entry must be revalidated by the origin server before being returned to the client
ই-ট্যাগগুলো অরিজিন সার্ভার থেকে আসে। ই-ট্যাগটি অপরিবর্তিত অবস্থায় ক্লায়েন্টের কাছে ফেরত দেওয়া হয়।

যদি-কোনো-মিল না হয়

If-None-Match হেডার থাকলে, একটি ক্যাশ করা এনটিটি তখনই বর্তমান বলে গণ্য হয়, যখন হেডারে থাকা ETag, ক্যাশ করা ETag-এর সাথে মেলে না । GET অনুরোধ ছাড়া অন্য যেসব অনুরোধে এই হেডারটি থাকে, সেগুলো অরিজিন সার্ভারে পাঠিয়ে দেওয়া হয়।

যদি Edge এই হেডার সহ একটি ইনবাউন্ড GET অনুরোধ পায়:

যদি তারপর
If-None-Match হেডারটি এক বা একাধিক ETag নির্দিষ্ট করে।
  1. Apigee Edge নির্দিষ্ট URI-এর জন্য যেকোনো মেয়াদোত্তীর্ণ নয় এমন ক্যাশ এন্ট্রি পুনরুদ্ধার করে এবং সেই ক্যাশ করা এন্ট্রিগুলিতে থাকা যেকোনো শক্তিশালী ETag-কে If-None-Match হেডারে নির্দিষ্ট করা ট্যাগগুলির সাথে তুলনা করে।
  2. যদি কোনো মিল খুঁজে পাওয়া যায়, Edge একটি 304 Not Modified স্ট্যাটাস ফেরত দেয়। যদি কোনো মিল খুঁজে না পাওয়া যায়, Edge অনুরোধটি অরিজিন সার্ভারে পাঠিয়ে দেয়।

If-None-Match হেডারটি "*" নির্দিষ্ট করে এবং অনুরোধ করা URI-এর জন্য একটি মেয়াদোত্তীর্ণ নয় এমন ক্যাশ করা এন্ট্রি বিদ্যমান থাকে।

Edge 304 Not Modified স্ট্যাটাস ফেরত দেয়
একই অনুরোধ URI সহ একটি ক্যাশে এন্ট্রি পাওয়া গেছে কিন্তু এতে শুধুমাত্র দুর্বল ETag রয়েছে। Edge ক্লায়েন্টের কাছে এন্ট্রিটি ফেরত পাঠানোর আগে, সেটিকে অবশ্যই অরিজিন সার্ভার দ্বারা পুনরায় যাচাই করতে হবে।
Edge একটি অরিজিন সার্ভার থেকে একটি ETag গ্রহণ করে। ই-ট্যাগটি অপরিবর্তিত অবস্থায় ক্লায়েন্টের কাছে ফেরত দেওয়া হয়।

If-Modified-Since

Apigee Edge কোনো GET অনুরোধে If-Modified-Since হেডার পেলে, একটি বৈধ ক্যাশ এন্ট্রি বিদ্যমান থাকলেও সেটি অরিজিন সার্ভারে পাঠিয়ে দেওয়া হয়।

এটি নিশ্চিত করে যে Apigee Edge-এর মাধ্যমে না আসা কোনো রিসোর্সের আপডেটও যেন অন্তর্ভুক্ত হয়। যদি অরিজিন সার্ভার একটি নতুন এনটিটি ফেরত দেয়, তাহলে Edge বিদ্যমান ক্যাশ এন্ট্রিটিকে নতুন মান দিয়ে প্রতিস্থাপন করে। যদি সার্ভার একটি 304 Not Modified স্ট্যাটাস ফেরত দেয়, এবং ক্যাশ করা রেসপন্সের Last-Modified হেডার নির্দেশ করে যে এটি পরিবর্তিত হয়নি, তাহলে Edge রেসপন্সের মানটি ফেরত দেয়।

অ্যাকসেপ্ট-এনকোডিং

যখন কোনো আগত অনুরোধে Accept-Encoding হেডারের সাথে gzip , deflate বা compress ভ্যালু অন্তর্ভুক্ত থাকে, তখন অরিজিন সার্ভার সংকুচিত ডেটা দিয়ে সাড়া দেয়। যখন পরবর্তী অনুরোধগুলো Accept-Encoding হেডার ছাড়া আসে, তখন সেগুলো একটি অসংকুচিত প্রতিক্রিয়া আশা করে। Apigee-এর প্রতিক্রিয়া ক্যাশিং ব্যবস্থা অরিজিন সার্ভারে ফিরে না গিয়েই আগত হেডারের উপর নির্ভর করে সংকুচিত এবং অসংকুচিত উভয় ধরনের প্রতিক্রিয়া পাঠাতে সক্ষম।

প্রতিটি ক্যাশ করা আইটেমের জন্য কী-গুলোকে আরও অর্থবহ করে তুলতে, আপনি ক্যাশ কী-গুলোর সাথে Accept হেডার ভ্যালু যুক্ত করতে পারেন। আরও বিস্তারিত জানতে, Response Cache policy- এর "Configuring a cache key" অংশটি দেখুন।