Cloudflare Workers-এ একটি স্ট্যাটিক Next.js সাইট
কেন এই সাইট একটি ছোট Worker-এ পরিবেশিত সম্পূর্ণ স্ট্যাটিক Next.js এক্সপোর্ট: দ্রুত পাতা, প্রায় শূন্য খরচ, সার্ভারে অ্যাডমিন সুরক্ষা আর নিরাপত্তা হেডার।
3 মিনিটের পড়াGryffin Forge
এই সাইটটি Next.js আর React দিয়ে বানানো, কিন্তু কোথাও কোনো Node.js সার্ভার চলে না। প্রতিটি পাবলিক পাতা বিল্ডের সময় স্ট্যাটিক HTML হিসেবে তৈরি হয় আর Cloudflare-এর edge থেকে পরিবেশিত হয়। একটি ছোট Worker সেই কয়েকটি কাজ সামলায় যার সত্যিই সার্ভার দরকার। কেন, আর অংশগুলো কীভাবে মেলে।
আগে স্ট্যাটিক
পোর্টফোলিও আর নমুনার সাইটে প্রায় সবই স্থির বিষয়বস্তু: নমুনার বর্ণনা, নিবন্ধ, কেস স্টাডি, টুলের পাতা। এর কিছুই দর্শকভেদে বদলায় না, তাই প্রতিটি অনুরোধে তৈরি করা কোনো লাভ ছাড়াই দেরি আর খরচ বাড়াত।
output: "export" দিয়ে Next.js প্রতিটি রুট — generateStaticParams দিয়ে গোনা /demos/[slug]-এর মতো গতিশীল রুটসহ — সাধারণ HTML ফাইল হিসেবে তৈরি করে। ফল:
- দ্রুত প্রথম প্রদর্শন — HTML পুরো আসে, সার্ভার রেন্ডারের সময় ছাড়াই।
- ন্যূনতম JavaScript — সার্ভার কম্পোনেন্ট ক্লায়েন্টে কোড পাঠায় না; শুধু ইন্টারঅ্যাক্টিভ অংশ জাগে (ফিল্টার, ক্যালকুলেটর, নমুনা ভিউয়ার)।
- প্রায় শূন্য খরচ — Cloudflare-এ স্ট্যাটিক ফাইল ক্যাশ থেকে পরিবেশিত হয়।
- সহজ ব্যর্থতা — পড়ে যাওয়ার মতো কোনো অ্যাপ সার্ভার নেই।
সার্ভার এখনো কোথায় দরকার
তিনটি জিনিস স্ট্যাটিক হতে পারে না:
- অ্যাডমিন অংশ কোনো বিষয়বস্তু পাঠানোর আগেই সুরক্ষিত হতে হবে।
- পরিসংখ্যান আর ত্রুটির প্রতিবেদন গ্রহণের জন্য একটি এন্ডপয়েন্ট দরকার।
- বাণিজ্যিক ফাংশন সার্ভারে প্রত্যাখ্যাত হতে হবে, শুধু লুকানো নয়।
একটি Worker স্ট্যাটিক ফাইলের সামনে শুধু /admin আর /api/*-এর জন্য দাঁড়ায়। এটা অ্যাডমিন রুটে স্বাক্ষরিত সেশন কুকি যাচাই করে, লগইন চেষ্টা সীমিত করে, কুকি বা IP ঠিকানা ছাড়াই একটি Durable Object-এ পাতা-দর্শন গোনে, আর সার্ভারে স্পষ্টভাবে কোনো ফ্ল্যাগ না থাকলে প্রতিটি বাণিজ্যিক এন্ডপয়েন্টে 403 দেয়। বাকি সব অনুরোধ সরাসরি স্ট্যাটিক ফাইলে যায়।
খসড়া কখনো অনলাইনে যায় না
বিষয়বস্তুর একটি অবস্থা থাকে: খসড়া, প্রিভিউ, প্রকাশিত বা আর্কাইভ। বিল্ড শুধু প্রকাশিত আর প্রিভিউর পাতা তৈরি করে; প্রিভিউতে noindex থাকে আর তালিকা ও সাইটম্যাপে থাকে না। খসড়া কখনো ফাইল হয় না, তাই ফাঁস হওয়ার কিছুই নেই।
এক ফাইলে নিরাপত্তা হেডার
Workers-এ স্ট্যাটিক ফাইল একটি _headers ফাইল সমর্থন করে, তাই নিরাপত্তা হেডার একবারই ঘোষণা করা হয়: কঠোর কনটেন্ট সিকিউরিটি পলিসি যা ফ্রেমে শুধু নমুনা রেন্ডারারের উৎস অনুমতি দেয়, X-Content-Type-Options, সতর্ক রেফারার নীতি আর অনুমতি নীতি যা সাইটের অব্যবহৃত সেন্সর বন্ধ রাখে।
সঠিক 404
স্ট্যাটিক ফাইলের সেটিং অজানা পথের জন্য তৈরি 404.html আসল 404 কোডসহ পরিবেশন করে, তাই সার্চ ইঞ্জিন soft-404 পাতা ইনডেক্স করে না।
আপস
- প্রতি অনুরোধে ব্যক্তিগতকরণ নেই। গতিশীল সবকিছু ব্রাউজার বা Worker-এ চলতে হবে।
- প্রকাশের জন্য নতুন বিল্ড। বিষয়বস্তু বদলাতে বিল্ড আর ডিপ্লয় লাগে। সপ্তাহে কয়েকবার বদলানো সাইটের জন্য এটা সুবিধা: প্রতিটি পরিবর্তন যাচাই আর সংস্করিত হয়।
- অন্তর্নির্মিত ছবি অপ্টিমাইজেশন নেই। স্ক্রিনশট তৈরির সময় WebP-তে রূপান্তরিত হয় আর নির্দিষ্ট আকারে পরিবেশিত হয়।
একটি প্রদর্শনী সাইটের জন্য আপসগুলো পুরোপুরি লাভজনক: ফল দ্রুত, সস্তা, শুরু থেকেই নিরাপদ আর বোঝা সহজ।