আপনার গতিশীল কন্টেন্ট তৈরি এবং পরিবেশন করতে অথবা মাইক্রোসার্ভিসেস হিসেবে REST API তৈরি করতে Firebase Hosting সাথে Cloud Functions যুক্ত করুন।
Cloud Functions for Firebase আপনাকে HTTPS অনুরোধের প্রতিক্রিয়ায় স্বয়ংক্রিয়ভাবে ব্যাকএন্ড কোড চালাতে দেয়। আপনার কোডটি Google-এর ক্লাউডে সংরক্ষিত থাকে এবং একটি পরিচালিত পরিবেশে চলে। আপনার নিজস্ব সার্ভার পরিচালনা এবং স্কেল করার কোনও প্রয়োজন নেই।
উদাহরণস্বরূপ, Firebase Hosting সাথে ইন্টিগ্রেটেড Cloud Functions জন্য কেস এবং নমুনা ব্যবহারের জন্য, আমাদের সার্ভারলেস ওভারভিউ দেখুন।
Cloud Functions Firebase Hosting সাথে সংযুক্ত করুন
এই বিভাগটি Firebase Hosting এর সাথে একটি ফাংশন সংযোগ করার জন্য একটি ওয়াক-থ্রু উদাহরণ প্রদান করে।
মনে রাখবেন যে ডায়নামিক কন্টেন্ট পরিবেশনের কর্মক্ষমতা উন্নত করতে, আপনি ঐচ্ছিকভাবে আপনার ক্যাশে সেটিংস টিউন করতে পারেন।
ধাপ ১: Cloud Functions সেট আপ করুন
নিশ্চিত করুন যে আপনার কাছে Firebase CLI এর সর্বশেষ সংস্করণ আছে এবং আপনি Firebase Hosting চালু করেছেন।
CLI ইনস্টল এবং Hosting শুরু করার বিষয়ে বিস্তারিত নির্দেশাবলীর জন্য, Hosting এর জন্য Get Started নির্দেশিকাটি দেখুন।
নিশ্চিত করুন যে আপনি Cloud Functions সেট আপ করেছেন:
যদি আপনি ইতিমধ্যেই Cloud Functions সেট আপ করে থাকেন, তাহলে আপনি ধাপ ২: একটি HTTPS ফাংশন তৈরি এবং পরীক্ষা করতে এগিয়ে যেতে পারেন।
যদি আপনি Cloud Functions সেট আপ না করে থাকেন:
আপনার প্রোজেক্ট ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে Cloud Functions শুরু করুন:
firebase init functions
অনুরোধ করা হলে, জাভাস্ক্রিপ্ট নির্বাচন করুন (এই ওয়াক-থ্রু উদাহরণটি JS ব্যবহার করে)।
আপনার স্থানীয় প্রজেক্ট ডিরেক্টরিতে একটি
functionsডিরেক্টরি আছে কিনা তা পরীক্ষা করুন (আপনার চালানো Firebase কমান্ড দ্বারা তৈরি)। এইfunctionsডিরেক্টরিতে Cloud Functions কোড থাকে।
ধাপ ২: আপনার Hosting সাইটের জন্য একটি HTTPS ফাংশন তৈরি এবং পরীক্ষা করুন
আপনার পছন্দের এডিটরে
/functions/index.jsখুলুন।ফাইলের বিষয়বস্তু নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন।
এই কোডটি একটি HTTPS ফাংশন (
bigbenনামে পরিচিত) তৈরি করে যা দিনের প্রতিটি ঘন্টার জন্য একটিBONGদিয়ে HTTPS অনুরোধের উত্তর দেয়, ঠিক যেমন একটি ঘড়ি।const functions = require('firebase-functions/v1'); exports.bigben = functions.https.onRequest((req, res) => { const hours = (new Date().getHours() % 12) + 1 // London is UTC + 1hr; res.status(200).send(`<!doctype html> <head> <title>Time</title> </head> <body> ${'BONG '.repeat(hours)} </body> </html>`); });Firebase Local Emulator Suite ব্যবহার করে স্থানীয়ভাবে আপনার ফাংশন পরীক্ষা করুন।
আপনার স্থানীয় প্রকল্প ডিরেক্টরির মূল থেকে, নিম্নলিখিত কমান্ডটি চালান:
firebase emulators:start
CLI দ্বারা প্রদত্ত স্থানীয় URL এর মাধ্যমে ফাংশনটি অ্যাক্সেস করুন, উদাহরণস্বরূপ:
।http://localhost:5001/ PROJECT_ID /us-central1/bigben
HTTPS অনুরোধ সম্পর্কে আরও জানতে Cloud Functions ডকুমেন্টেশন দেখুন।
পরবর্তী ধাপে আপনাকে দেখানো হবে কিভাবে Firebase Hosting URL থেকে এই HTTPS ফাংশনটি অ্যাক্সেস করবেন যাতে এটি আপনার Firebase-হোস্ট করা সাইটের জন্য গতিশীল সামগ্রী তৈরি করতে পারে।
ধাপ ৩: আপনার ফাংশনে সরাসরি HTTPS অনুরোধ করুন
পুনর্লিখনের নিয়ম ব্যবহার করে, আপনি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন অনুরোধগুলিকে একটি একক গন্তব্যে নির্দেশ করতে পারেন। নিম্নলিখিত ধাপগুলি আপনাকে দেখায় যে কীভাবে আপনার Hosting সাইটের ../bigben পাথ থেকে সমস্ত অনুরোধকে bigben ফাংশনটি কার্যকর করার জন্য নির্দেশিত করবেন।
তোমার
firebase.jsonফাইলটি খুলো।hostingবিভাগের অধীনে নিম্নলিখিতrewriteকনফিগারেশন যোগ করুন:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/bigben", "function": { "functionId": "bigben", "region": "us-central1" // optional (see note below) "pinTag": true // optional (see note below) } } ] }Firebase এমুলেটর দিয়ে আবার পরীক্ষা করে নিশ্চিত করুন যে আপনার পুনঃনির্দেশনা প্রত্যাশা অনুযায়ী কাজ করছে।
আপনার স্থানীয় প্রকল্প ডিরেক্টরির মূল থেকে, নিম্নলিখিত কমান্ডটি চালান:
firebase emulators:start
আপনার সাইটের স্থানীয়ভাবে হোস্ট করা URL টি CLI দ্বারা ফেরত পাঠানো হয় (সাধারণত
localhost:5000), কিন্তু URL টিbigbenদিয়ে যুক্ত করুন, যেমন:http://localhost:5000/bigben
আপনার ফাংশন এবং আপনার সাইটের জন্য এর কার্যকারিতা সম্পর্কে পুনরাবৃত্তি করুন। এই পুনরাবৃত্তিগুলি পরীক্ষা করতে Firebase এমুলেটরগুলি ব্যবহার করুন।
যদি
hosting.rewritesকনফিগারেশনের একটিfunctionব্লক থেকেregionবাদ দেওয়া হয়, তাহলে Firebase CLI স্বয়ংক্রিয়ভাবে ফাংশনের সোর্স কোড থেকে অঞ্চলটি সনাক্ত করার চেষ্টা করে, যা, যদি নির্দিষ্ট না করা থাকে, তাহলে ডিফল্টভাবেus-central1ব্যবহার করে। যদি ফাংশনের সোর্স কোড অনুপলব্ধ থাকে, তাহলে CLI ডিপ্লয়েড ফাংশন থেকে অঞ্চলটি সনাক্ত করার চেষ্টা করে। যদি ফাংশনটি একাধিক অঞ্চলে থাকে, তাহলে CLI-এর জন্যhosting.rewritesকনফিগারেশনেregionনির্দিষ্ট করা প্রয়োজন।
pinTagবৈশিষ্ট্যটি শুধুমাত্র Cloud Functions for Firebase উপলব্ধ। এই বৈশিষ্ট্যটির সাহায্যে, আপনি নিশ্চিত করতে পারেন যে আপনার সাইটের গতিশীল সামগ্রী তৈরির জন্য প্রতিটি ফাংশন আপনার স্ট্যাটিক Hosting রিসোর্স এবং Hosting কনফিগারেশনের সাথে সিঙ্ক করা আছে। এছাড়াও, এই বৈশিষ্ট্যটি আপনাকে Hosting প্রিভিউ চ্যানেলগুলিতে ফাংশনগুলিতে আপনার পুনর্লিখনের পূর্বরূপ দেখতে দেয়।যদি আপনি
hosting.rewritesকনফিগারেশনের একটিfunctionব্লকে"pinTag": trueযোগ করেন, তাহলে "pinned" ফাংশনটি আপনার স্ট্যাটিক Hosting রিসোর্স এবং কনফিগারেশনের সাথে স্থাপন করা হবে, এমনকিচালানোর সময়ও। যদি আপনি আপনার সাইটের একটি সংস্করণ রোল ব্যাক করেন, তাহলে "pinned" ফাংশনটিও রোল ব্যাক করা হবে।firebase deploy --only hosting এই বৈশিষ্ট্যটি Cloud Run ট্যাগের উপর নির্ভর করে, যার প্রতিটি পরিষেবার জন্য 1000টি ট্যাগ এবং প্রতিটি অঞ্চলের জন্য 2000টি ট্যাগের সীমা রয়েছে। এর অর্থ হল শত শত স্থাপনার পরে, কোনও সাইটের প্রাচীনতম সংস্করণগুলি কাজ করা বন্ধ করে দিতে পারে।
সেরা পারফরম্যান্সের জন্য, নিম্নলিখিত অঞ্চলগুলির মধ্যে একটি বেছে নিয়ে Hosting সাথে আপনার ফাংশনগুলি একত্রিত করুন:
-
us-west1 -
us-central1 -
us-east1 -
europe-west1 -
asia-east1
পুনর্লিখনের নিয়ম সম্পর্কে আরও বিস্তারিত জানতে Hosting কনফিগারেশন পৃষ্ঠাটি দেখুন। আপনি বিভিন্ন Hosting কনফিগারেশনের জন্য প্রতিক্রিয়ার অগ্রাধিকার ক্রম সম্পর্কেও জানতে পারেন।
মনে রাখবেন যে ডায়নামিক কন্টেন্ট পরিবেশনের কর্মক্ষমতা উন্নত করতে, আপনি ঐচ্ছিকভাবে আপনার ক্যাশে সেটিংস টিউন করতে পারেন।
ধাপ ৪: আপনার ফাংশন স্থাপন করুন
একবার আপনার ফাংশনটি এমুলেটরে পছন্দসইভাবে কাজ করতে শুরু করলে, আপনি বাস্তব প্রকল্প সংস্থানগুলি ব্যবহার করে এটি স্থাপন, পরীক্ষা এবং চালানোর জন্য এগিয়ে যেতে পারেন। প্রোডাকশনে চলমান ফাংশনগুলির জন্য স্কেলিং আচরণ নিয়ন্ত্রণ করার জন্য রানটাইম বিকল্পগুলি সেট করার কথা বিবেচনা করার এটি একটি ভাল সময়।
আপনার স্থানীয় প্রজেক্ট ডিরেক্টরির রুট থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার সাইটে আপনার ফাংশনের পাশাপাশি আপনার Hosting কন্টেন্ট এবং কনফিগারেশন স্থাপন করুন:
firebase deploy --only functions,hosting
নিম্নলিখিত URL গুলিতে আপনার লাইভ সাইট এবং আপনার ফাংশন অ্যাক্সেস করুন:
আপনার Firebase সাবডোমেন:
PROJECT_ID .web.app/bigbenএবংPROJECT_ID .firebaseapp.com/bigbenযেকোনো সংযুক্ত কাস্টম ডোমেন :
CUSTOM_DOMAIN /bigben
একটি ওয়েব ফ্রেমওয়ার্ক ব্যবহার করুন
আপনার অ্যাপের গতিশীল কন্টেন্ট পরিবেশন করতে এবং জটিল ওয়েব অ্যাপগুলি আরও সহজে লেখার জন্য আপনি Cloud Functions Express.js এর মতো ওয়েব ফ্রেমওয়ার্ক ব্যবহার করতে পারেন।
নিম্নলিখিত বিভাগে Firebase Hosting এবং Cloud Functions সহ Express.js ব্যবহারের একটি ওয়াক-থ্রু উদাহরণ প্রদান করা হয়েছে।
আপনার
functionsডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার স্থানীয় প্রকল্পে Express.js ইনস্টল করুন:npm install express --save
আপনার
/functions/index.jsফাইলটি খুলুন, তারপর Express.js আমদানি করুন এবং আরম্ভ করুন:const functions = require('firebase-functions/v1'); const express = require('express'); const app = express();
নিম্নলিখিত দুটি শেষবিন্দু যোগ করুন:
/এ আমাদের ওয়েবসাইটের সূচী পরিবেশন করার জন্য প্রথম এন্ডপয়েন্ট যোগ করুন।app.get('/', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.send(` <!doctype html> <head> <title>Time</title> <link rel="stylesheet" href="/style.css"> <script src="/script.js"></script> </head> <body> <p>In London, the clock strikes: <span id="bongs">${'BONG '.repeat(hours)}</span></p> <button onClick="refresh(this)">Refresh</button> </body> </html>`); });এবং আরেকটি এন্ডপয়েন্ট যা
BONGকাউন্টকে API হিসেবে JSON ফর্ম্যাটে/apiঅধীনে ফেরত পাঠাবে:app.get('/api', (req, res) => { const date = new Date(); const hours = (date.getHours() % 12) + 1; // London is UTC + 1hr; res.json({bongs: 'BONG '.repeat(hours)}); });
Express.js অ্যাপটি HTTPS ফাংশন হিসেবে রপ্তানি করুন:
exports.app = functions.https.onRequest(app);
আপনার
firebase.jsonফাইলে, সমস্ত অনুরোধappফাংশনে নির্দেশ করুন। এই পুনর্লিখনটি Express.js কে আমাদের কনফিগার করা বিভিন্ন সাবপাথ পরিবেশন করতে দেয় (এই উদাহরণে,/এবং/api)।{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
মিডলওয়্যার যোগ করুন
আমাদের উদাহরণটি অব্যাহত রেখে, এখন যেহেতু আপনি Express.js ব্যবহার করছেন, আপনি সাধারণ পদ্ধতিতে Express.js মিডলওয়্যার যোগ করতে পারেন। উদাহরণস্বরূপ, আপনি আমাদের এন্ডপয়েন্টগুলিতে CORS অনুরোধ সক্ষম করতে পারেন।
নিম্নলিখিত কমান্ডটি চালিয়ে
corsমিডলওয়্যার ইনস্টল করুন:npm install --save cors
আপনার
/functions/index.jsফাইলটি খুলুন, তারপর আপনার Express.js অ্যাপেcorsযোগ করুন, যেমন:const cors = require('cors')({origin: true}); app.use(cors);
এক্সপ্রেস অ্যাপস এবং মিডলওয়্যার মডিউলের সাথে ফায়ারবেস ব্যবহার সম্পর্কে আরও জানতে Cloud Functions ডকুমেন্টেশন দেখুন।
পরবর্তী পদক্ষেপ
একটি গ্লোবাল CDN-তে আপনার গতিশীল কন্টেন্টের জন্য ক্যাশিং সেট আপ করুন ।
Firebase Admin SDK ব্যবহার করে অন্যান্য Firebase পরিষেবার সাথে ইন্টারঅ্যাক্ট করুন।
Cloud Functions মূল্য নির্ধারণ , কোটা এবং সীমা পর্যালোচনা করুন।