Check out what’s new from Firebase at Google I/O 2022. Learn more

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

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

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

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

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

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

Google এর ওয়েব ডেভেলপার ডকুমেন্টেশনে ক্যাশিং আচরণ সম্পর্কে আরও জানুন।

ক্যাশে-কন্ট্রোল সেট করুন

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

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

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

  • public — ক্যাশেকে public হিসাবে চিহ্নিত করে। এর মানে হল যে ব্রাউজার এবং মধ্যবর্তী সার্ভার উভয়ই (অর্থাৎ Firebase হোস্টিংয়ের জন্য CDN) বিষয়বস্তু ক্যাশে করতে পারে।

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

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

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

আপনি Mozilla ডেভেলপার নেটওয়ার্কে এবং Google এর ওয়েব ডেভেলপার ডকুমেন্টেশনে Cache-Control শিরোনাম সম্পর্কে আরও জানতে পারেন।

ক্যাশে কন্টেন্ট কখন পরিবেশিত হয়?

ব্রাউজার এবং CDN আপনার বিষয়বস্তু ক্যাশে এর উপর ভিত্তি করে:

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

হেডার পরিবর্তন করুন

Vary হেডার নির্ধারণ করে যে কোন অনুরোধের শিরোনামগুলি একটি উপযুক্ত প্রতিক্রিয়া প্রদান করতে ব্যবহার করা উচিত (ক্যাশে করা সামগ্রীটি বৈধ কিনা বা বিষয়বস্তুটি মূল সার্ভারের সাথে পুনরায় যাচাই করা উচিত কিনা)৷

Firebase হোস্টিং স্বয়ংক্রিয়ভাবে সাধারণ পরিস্থিতির জন্য আপনার প্রতিক্রিয়াতে একটি উপযুক্ত 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

এই সেটিংসের সাথে, ভিন্ন ভিন্ন X-My-Custom-Header শিরোনাম সহ দুটি অন্যথায় অভিন্ন অনুরোধ আলাদাভাবে ক্যাশে করা হয়। লক্ষ্য করুন যে যখন গতিশীল বিষয়বস্তুর জন্য অনুরোধ করা হয় তখন হোস্টিং ডিফল্টভাবে Vary হেডারে Cookie এবং Authorization যোগ করে। এটি নিশ্চিত করে যে আপনার ব্যবহার করা যেকোনো সেশন বা কুকি অনুমোদনের শিরোনাম ক্যাশে কী-এর অংশ তৈরি করা হয়েছে, যা দুর্ঘটনাজনিত বিষয়বস্তু ফাঁস প্রতিরোধ করে।

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

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

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

কুকিজ ব্যবহার করে

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

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