ক্যাশে আচরণ পরিচালনা করুন

Firebase Hosting আপনার সাইটকে যত দ্রুত সম্ভব করতে একটি শক্তিশালী গ্লোবাল CDN ব্যবহার করে।

যেকোনো অনুরোধকৃত স্ট্যাটিক কন্টেন্ট স্বয়ংক্রিয়ভাবে CDN-এ ক্যাশ করা হয় । আপনি যদি নিজের সাইটের সামগ্রীটি পুনরায় প্রস্তুত করেন তবে Firebase Hosting স্বয়ংক্রিয়ভাবে আপনার সমস্ত ক্যাশেড সামগ্রী সিডিএন জুড়ে পরবর্তী অনুরোধ না হওয়া পর্যন্ত সাফ করে।

যাইহোক, যেহেতু Cloud Functions এবং Cloud Run পরিষেবাগুলি গতিশীলভাবে বিষয়বস্তু তৈরি করে, তাই একটি প্রদত্ত URL-এর বিষয়বস্তু ব্যবহারকারীর ইনপুট বা ব্যবহারকারীর পরিচয়ের উপর ভিত্তি করে পরিবর্তিত হতে পারে। এটির জন্য অ্যাকাউন্টে, ব্যাকএন্ড কোড দ্বারা পরিচালিত অনুরোধগুলি ডিফল্টরূপে সিডিএন -তে ক্যাশে না

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

আপনি একইভাবে ক্যাশিং আচরণ কনফিগার করতে পারেন সম্ভাব্যভাবে ফাংশন নির্বাহের খরচ কমাতে কারণ বিষয়বস্তু একটি ট্রিগার ফাংশনের পরিবর্তে CDN থেকে পরিবেশিত হয়। Cloud Functions এবং Cloud Run ডকুমেন্টেশনে ফাংশন এক্সিকিউশন এবং পরিষেবাগুলি অপ্টিমাইজ করার বিষয়ে আরও পড়ুন৷

ব্যতিক্রমটি অনুরোধগুলি যা 404 ত্রুটিগুলি ফেরত দেয়। CDN 10 মিনিটের জন্য একটি অস্তিত্বহীন URL-এ আপনার পরিষেবার 404 প্রতিক্রিয়া ক্যাশ করে, যাতে সেই URL-এর জন্য পরবর্তী অনুরোধগুলি CDN-এর বাইরে দেওয়া হয়৷ আপনি যদি আপনার পরিষেবা পরিবর্তন করেন যাতে এই URL-এ সামগ্রী এখন বিদ্যমান থাকে, CDN 10 মিনিটের জন্য (সর্বোচ্চ) যেকোনও ক্যাশে করা 404s পরিবেশন করতে থাকে এবং তারপরে সেই URL থেকে সাধারণভাবে সামগ্রী পরিবেশন করে।

যদি 404 প্রতিক্রিয়াতে ইতিমধ্যে আপনার Cloud Functions বা Cloud Run পরিষেবা দ্বারা সেট করা ক্যাচিং শিরোনাম থাকে তবে তারা 10 মিনিটের ডিফল্টকে ওভাররাইড করে এবং সিডিএনটির ক্যাশে আচরণ পুরোপুরি নির্ধারণ করে।

Learn more about caching behavior in Google's web developer documentation .

Set Cache-Control

ডায়নামিক কন্টেন্টের জন্য ক্যাশে পরিচালনা করতে আপনি যে প্রধান টুলটি ব্যবহার করেন তা হল Cache-Control হেডার। এই শিরোনামটি কনফিগার করার মাধ্যমে, আপনি ব্রাউজার এবং CDN উভয়ের সাথেই যোগাযোগ করতে পারেন কতক্ষণ আপনার সামগ্রী ক্যাশে করা যাবে৷ আপনার ফাংশনে, আপনি Cache-Control সেট করুন এভাবে:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

এই উদাহরণ শিরোনামে, নির্দেশাবলী তিনটি জিনিস করে:

  • public — ক্যাশেকে public হিসাবে চিহ্নিত করে। This means that both the browser and the intermediate servers (meaning the CDN for Firebase Hosting ) can cache the content.

  • max-age — ব্রাউজার এবং CDN কে কত সেকেন্ডে কন্টেন্ট ক্যাশে করতে পারে তা বলে। নির্ধারিত সময় শেষ হয়ে গেলে, ব্রাউজার এবং সিডিএনকে অবশ্যই মূল সার্ভারের সাথে বিষয়বস্তুটিকে পুনরায় যাচাই করতে হবে। উদাহরণের শিরোনামে, আমরা ব্রাউজার এবং CDN-কে পাঁচ মিনিটের জন্য বিষয়বস্তু ক্যাশে করার অনুমতি দিচ্ছি (CDN ক্যাশিংয়ের জন্য নির্দিষ্ট নিয়ন্ত্রণের জন্য নিচের s-maxage দেখুন)।

  • s-maxage — শুধুমাত্র CDN-ক্যাশিংয়ের জন্য max-age নির্দেশিকাকে ওভাররাইড করে; CDN কে কত সেকেন্ডে কন্টেন্ট ক্যাশে করতে পারে তা বলে। When the set time expires, the CDN must revalidate the content with the origin server. In the example header, we're overriding the setting for max-age for the CDN only and allowing the CDN to cache the content for ten minutes.

max-age এবং s-maxage জন্য, তাদের মানগুলি দীর্ঘতম সময়ে সেট করুন যাতে ব্যবহারকারীরা পুরানো বিষয়বস্তু প্রাপ্তির সাথে স্বাচ্ছন্দ্য বোধ করেন৷ যদি কোনও পৃষ্ঠা প্রতি কয়েক সেকেন্ডে পরিবর্তিত হয় তবে একটি ছোট সময়ের মান ব্যবহার করুন। যাইহোক, অন্যান্য ধরনের বিষয়বস্তু নিরাপদে ঘন্টা, দিন, এমনকি মাসের জন্য ক্যাশে করা যেতে পারে।

You can learn more about the Cache-Control header on the Mozilla Developer Network and in Google's web developer documentation .

When is cached content served?

The browser and the CDN cache your content based on:

  • হোস্টনাম
  • পথ
  • ক্যোয়ারী স্ট্রিং
  • Vary হেডারে উল্লেখ করা অনুরোধ শিরোনামের বিষয়বস্তু

Vary headers

The Vary header determines which request headers should be used to provide an appropriate response (whether the cached content is valid or if the content should be revalidated with the origin server).

Firebase Hosting স্বয়ংক্রিয়ভাবে সাধারণ পরিস্থিতির জন্য আপনার প্রতিক্রিয়াতে একটি উপযুক্ত Vary হেডার সেট করে। বেশিরভাগ সময়, আপনাকে Vary হেডার নিয়ে চিন্তা করতে হবে না। তবে কিছু উন্নত ব্যবহারের ক্ষেত্রে আপনার অন্যান্য শিরোনাম থাকতে পারে যা আপনাকে ক্যাশে প্রভাবিত করতে হবে। যখন এটি হয়, আপনি আপনার প্রতিক্রিয়ার উপর Vary শিরোনাম সেট করতে পারেন। যেমন:

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

এই ক্ষেত্রে, Vary হেডারের মান হল:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

With these settings, two otherwise identical requests with different X-My-Custom-Header headers are cached separately. লক্ষ্য করুন যে যখন গতিশীল বিষয়বস্তুর জন্য অনুরোধ করা হয় তখন Hosting ডিফল্টভাবে Vary হেডারে Cookie এবং Authorization যোগ করে। এটি নিশ্চিত করে যে আপনার ব্যবহার করা যেকোনো সেশন বা কুকি অনুমোদনের শিরোনাম ক্যাশে কী-এর অংশ তৈরি করা হয়েছে, যা দুর্ঘটনাজনিত বিষয়বস্তু ফাঁস প্রতিরোধ করে।

এছাড়াও নোট করুন:

  • কেবল GET এবং HEAD অনুরোধগুলি ক্যাশে করা যেতে পারে। অন্যান্য পদ্ধতি ব্যবহার করে HTTPS অনুরোধগুলি কখনই ক্যাশে করা হয় না।

  • Vary হেডারে সেটিংস যোগ করার সময় সতর্ক থাকুন। আপনি যত বেশি সেটিংস যোগ করবেন, CDN ক্যাশে করা বিষয়বস্তু পরিবেশন করার সম্ভাবনা তত কম। এছাড়াও মনে রাখবেন যে Vary অনুরোধ শিরোনামের উপর ভিত্তি করে, প্রতিক্রিয়া শিরোনাম নয়।

Using cookies

Cloud Functions বা Cloud Run সাথে Firebase Hosting ব্যবহার করার সময়, কুকিগুলি সাধারণত আগত অনুরোধগুলি থেকে ছিনিয়ে নেওয়া হয়। দক্ষ CDN ক্যাশে আচরণের জন্য এটি প্রয়োজনীয়। শুধুমাত্র বিশেষভাবে-নামিত __session কুকিগুলিকে আপনার অ্যাপটি কার্যকর করার অনুমতি দেওয়া হয়েছে৷

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