Pair Cloud Functions with Firebase Hosting to generate and serve your dynamic content or build REST APIs as microservices.
Cloud Functions for Firebase lets you automatically run backend code in response to HTTPS requests. Your code is stored in Google's cloud and runs in a managed environment. আপনার নিজের সার্ভারগুলি পরিচালনা এবং স্কেল করার দরকার নেই।
উদাহরণস্বরূপ Firebase Hosting সাথে সংহত Cloud Functions জন্য কেস এবং নমুনাগুলি ব্যবহার করুন, আমাদের সার্ভারলেস ওভারভিউটি দেখুন।
Cloud Functions Firebase Hosting সাথে সংযুক্ত করুন
This section provides a walk-through example for connecting a function to Firebase Hosting .
মনে রাখবেন যে গতিশীল সামগ্রী পরিবেশন করার কর্মক্ষমতা উন্নত করতে, আপনি ঐচ্ছিকভাবে আপনার ক্যাশে সেটিংস টিউন করতে পারেন৷
ধাপ 1: Cloud Functions সেট আপ করুন
নিশ্চিত করুন যে আপনার কাছে Firebase CLI এর সর্বশেষ সংস্করণ আছে এবং আপনি Firebase Hosting শুরু করেছেন।
CLI ইনস্টল করা এবং Hosting শুরু করার বিষয়ে বিস্তারিত নির্দেশাবলীর জন্য, Hosting জন্য শুরু করুন গাইড দেখুন।
আপনি Cloud Functions সেট আপ করেছেন তা নিশ্চিত করুন:
আপনি যদি ইতিমধ্যেই Cloud Functions সেট আপ করে থাকেন, আপনি ধাপ 2-এ যেতে পারেন: একটি HTTPS ফাংশন তৈরি করুন এবং পরীক্ষা করুন ৷
If you've not set up Cloud Functions :
Initialize Cloud Functions by running the following command from the root of your project directory:
firebase init functions
When prompted, select JavaScript (this walk-through example uses JS).
Check that you have a
functions
directory in your local project directory (created by the Firebase command you just ran). Thisfunctions
directory is where the code for Cloud Functions lives.
Step 2: Create and test an HTTPS function for your Hosting site
আপনার প্রিয় সম্পাদকে
/functions/index.js
খুলুন।নিম্নলিখিত কোড দিয়ে ফাইলের বিষয়বস্তু প্রতিস্থাপন করুন।
এই কোডটি একটি এইচটিটিপিএস ফাংশন তৈরি করে (
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 ডকুমেন্টেশন দেখুন।
The next step walks you through how to access this HTTPS function from a Firebase Hosting URL so that it can generate dynamic content for your Firebase-hosted site.
পদক্ষেপ 3: আপনার ফাংশনে সরাসরি এইচটিটিপিএস অনুরোধ
পুনর্লিখনের নিয়মের সাহায্যে, আপনি একটি একক গন্তব্যে নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন অনুরোধগুলিকে সরাসরি করতে পারেন। The following steps show you how to direct all requests from the path ../bigben
on your Hosting site to execute the bigben
function.
আপনার
firebase.json
ফাইলটি খুলুন।Add the following
rewrite
configuration under thehosting
section:"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) } } ] }
Confirm that your redirect works as expected by testing again with the Firebase emulators.
আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে, নিম্নলিখিত কমান্ডটি চালান:
firebase emulators:start
Visit the locally hosted URL for your site as returned by the CLI (usually
localhost:5000
), but append the URL withbigben
, like so:http://localhost:5000/bigben
আপনার ফাংশন এবং আপনার সাইটের জন্য এর কার্যকারিতা পুনরাবৃত্তি করুন। এই পুনরাবৃত্তি পরীক্ষা করতে Firebase এমুলেটর ব্যবহার করুন।
If
region
is omitted from afunction
block of thehosting.rewrites
config, the Firebase CLI attempts to automatically detect the region from the function's source code which, if unspecified, defaults tous-central1
. ফাংশনের সোর্স কোড অনুপলব্ধ হলে, CLI নিয়োজিত ফাংশন থেকে অঞ্চল সনাক্ত করার চেষ্টা করে। ফাংশনটি একাধিক অঞ্চলে থাকলে, CLI-এর জন্যhosting.rewrites
কনফিগারেশনেregion
উল্লেখ করতে হবে।
pinTag
বৈশিষ্ট্যটি শুধুমাত্র Cloud Functions for Firebase উপলব্ধ। With this feature, you can ensure that each function for generating your site's dynamic content is kept in sync with your static Hosting resources and Hosting config. এছাড়াও, এই বৈশিষ্ট্যটি আপনাকে Hosting প্রিভিউ চ্যানেলগুলিতে ফাংশনে আপনার পুনর্লিখনের পূর্বরূপ দেখতে দেয়।If you add
"pinTag": true
to afunction
block of thehosting.rewrites
config, then the "pinned" function will be deployed along with your static Hosting resources and configuration, even when running. আপনি যদি আপনার সাইটের একটি সংস্করণ রোল ব্যাক করেন, "পিন করা" ফাংশনটিও রোল ব্যাক করা হয়৷
firebase deploy --only hosting এই বৈশিষ্ট্যটি Cloud Run ট্যাগের উপর নির্ভর করে, যার সীমা প্রতি পরিষেবা প্রতি 1000 ট্যাগ এবং প্রতি অঞ্চলে 2000 ট্যাগ রয়েছে৷ এর অর্থ হ'ল শত শত মোতায়েনের পরে, কোনও সাইটের প্রাচীনতম সংস্করণগুলি কাজ করা বন্ধ করতে পারে।
সেরা পারফরম্যান্সের জন্য, নিম্নলিখিত অঞ্চলগুলির মধ্যে একটি বেছে নিয়ে Hosting সাথে আপনার ফাংশনগুলি কলোকেট করুন:
-
us-west1
-
us-central1
-
us-east1
-
europe-west1
-
asia-east1
পুনর্লিখনের নিয়ম সম্পর্কে আরও বিস্তারিত জানার জন্য Hosting কনফিগারেশন পৃষ্ঠায় যান। আপনি বিভিন্ন Hosting কনফিগারেশনের প্রতিক্রিয়াগুলির অগ্রাধিকার ক্রম সম্পর্কেও শিখতে পারেন।
Note that to improve the performance of serving dynamic content, you can optionally tune your cache settings .
Step 4: Deploy your function
Once your function is working as desired in the emulator, you can proceed to deploying, testing, and running it with real project resources. This is a good time to consider setting runtime options to control scaling behavior for functions running in production.
আপনার স্থানীয় প্রকল্প ডিরেক্টরিটির মূল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার ফাংশন পাশাপাশি আপনার Hosting সামগ্রী এবং কনফিগারেশন আপনার সাইটে মোতায়েন করুন:
firebase deploy --only functions,hosting
নিম্নলিখিত URLগুলিতে আপনার লাইভ সাইট এবং আপনার ফাংশন অ্যাক্সেস করুন:
Your Firebase subdomains:
PROJECT_ID .web.app/bigben
এবংPROJECT_ID .firebaseapp.com/bigben
Any connected custom domains :
CUSTOM_DOMAIN /bigben
একটি ওয়েব ফ্রেমওয়ার্ক ব্যবহার করুন
You can use web frameworks, like Express.js , in Cloud Functions to serve your app's dynamic content and write complex web apps more easily.
Firebase Hosting এবং Cloud Functions সাথে Express.js ব্যবহার করার জন্য নিম্নলিখিত বিভাগটি একটি ওয়াক-থ্রু উদাহরণ প্রদান করে।
আপনার
functions
ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি চালিয়ে আপনার স্থানীয় প্রকল্পে Express.js ইনস্টল করুন:npm install express --save
Open your
/functions/index.js
file, then import and initialize 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>`); });
এবং
/api
অধীনে JSON ফর্ম্যাটে, API হিসাবেBONG
গণনা ফেরত দেওয়ার জন্য আরেকটি শেষ পয়েন্ট: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)}); });
একটি HTTPS ফাংশন হিসাবে Express.js অ্যাপ রপ্তানি করুন:
exports.app = functions.https.onRequest(app);
আপনার
firebase.json
ফাইলে, সমস্ত অনুরোধapp
ফাংশনে নির্দেশ করুন। এই পুনঃলিখনটি Express.js-কে আমাদের কনফিগার করা বিভিন্ন সাবপাথ পরিবেশন করতে দেয় (এই উদাহরণে,/
এবং/api
)।{ "hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "**", "function": "app" } ] } }
মিডলওয়্যার যোগ করুন
Continuing our example, now that you're using Express.js, you can add Express.js middleware in the typical way. For example, you can enable CORS requests on our endpoints.
নিম্নলিখিত কমান্ডটি চালিয়ে
cors
মিডলওয়্যার ইনস্টল করুন:npm install --save cors
আপনার
/functions/index.js
ফাইলটি খুলুন, তারপর আপনার Express.js অ্যাপেcors
যোগ করুন, যেমন:const cors = require('cors')({origin: true}); app.use(cors);
এক্সপ্রেস অ্যাপস এবং মিডলওয়্যার মডিউলগুলির সাথে ফায়ারবেস ব্যবহার সম্পর্কে আরও জানতে Cloud Functions ডকুমেন্টেশনে যান৷
পরবর্তী পদক্ষেপ
একটি বিশ্বব্যাপী CDN-এ আপনার গতিশীল সামগ্রীর জন্য ক্যাশিং সেট আপ করুন ৷
ফায়ারবেস অ্যাডমিন এসডিকে ব্যবহার করে অন্যান্য ফায়ারবেস পরিষেবাদির সাথে যোগাযোগ করুন।
Cloud Functions জন্য মূল্য এবং কোটা এবং সীমা পর্যালোচনা করুন৷