গুলশানের একটা ছোট ফ্যাশন ব্র্যান্ডের WooCommerce সাইট। ফেসবুক পেজ থেকে দিনে বিশ-পঁচিশটা অর্ডার আসে, ব্যবসা মন্দ চলছে না। কিন্তু ঈদের ঠিক আগের সপ্তাহে হোস্টিং কোম্পানি সাইটটা সাসপেন্ড করে দিল। সাপোর্ট টিকিটে ব্যাখ্যা এক লাইনের — 'CPU limit exceeded'. মালিক ফোন করে বললেন, 'ভাই, আমার তো ট্রাফিকই নাই। আমি এমন কী করলাম যে পুরো সার্ভার আটকে গেল?'
প্রশ্নটা ন্যায্য। দিনে হাজার দুয়েক ভিজিটরের জন্য সাড়ে তিন হাজার টাকার শেয়ার্ড হোস্টিংয়ের হাঁপিয়ে ওঠার কথা নয়। সমস্যাটা ভিজিটরের সংখ্যায় ছিল না, ছিল প্রতিটা ভিজিটের দামে। ড্যাশবোর্ডে ঢুকে গুনে দেখা গেল অ্যাক্টিভ প্লাগইন ৩৮টা। শুধু হোমপেজ একবার খুলতে ২৭০-এর বেশি ডাটাবেস কুয়েরি চলছে, আর সার্ভার প্রথম বাইট পাঠাতেই নিচ্ছে প্রায় তিন সেকেন্ড।
ফোন করার আগে তিনি নিজে একটা চেষ্টা করেছিলেন — প্ল্যান আপগ্রেড। সাড়ে তিন হাজারের হোস্টিং ছেড়ে বারো হাজার টাকার প্ল্যানে গেলেন। লোড টাইম ৭.১ সেকেন্ড থেকে নামল ৫.৮-এ। সাড়ে আট হাজার টাকা খরচ করে দেড় সেকেন্ড। কারণটা সহজ: বেশি সার্ভার রিসোর্স দিয়ে অপ্রয়োজনীয় কাজ একটু দ্রুত করানো যায়, কিন্তু অপ্রয়োজনীয় কাজটা বন্ধ করা যায় না। জরুরি প্লাগইন বাছাইয়ের পুরো ব্যাপারটাই আসলে এই — কোন কাজটা আদৌ দরকার সেটা ঠিক করা।
প্লাগইন কোনো ফিচার নয়, প্লাগইন একটা দায়
ইনস্টল বোতামে চাপ দেওয়ার সময় মাথায় একটাই কথা থাকে — একটা ফিচার যোগ করছি। বাস্তবে যা করছি তা হলো, অচেনা একজনের লেখা কয়েক হাজার লাইন PHP কোডকে আমাদের সাইটের প্রতিটা রিকোয়েস্টে চলার অনুমতি দিচ্ছি, এবং তাকে পুরো ডাটাবেসে হাত দেওয়ার ক্ষমতা দিচ্ছি। ওয়ার্ডপ্রেসে প্লাগইনের কোনো স্যান্ডবক্স নেই — একটা প্লাগইন চাইলে অন্য প্লাগইনের ডেটা পড়তে পারে, ইউজার টেবিল বদলাতে পারে, সাইটের যেকোনো আউটপুট পাল্টে দিতে পারে।
আর এই অনুমতি এককালীন নয়, চলমান। প্রতিটা প্লাগইন প্রতি পেজ লোডে তার হুক চালায়, নিজের CSS আর JavaScript গোটা সাইটে যোগ করে, wp_options টেবিলে অটোলোড হওয়া সেটিংস রাখে, অনেক সময় নিজের জন্য আলাদা টেবিল বানায় আর ব্যাকগ্রাউন্ডে ক্রন জব চালাতে থাকে। দশটা প্লাগইনে এই খরচ চোখে পড়ে না। আটত্রিশটায় পড়ে — এবং হোস্টিং কোম্পানির নজরেও পড়ে।
আটত্রিশটা প্লাগইন কেউ একদিনে বসায় না
প্লাগইন জমে ধীরে, একটা একটা করে, প্রতিবার একটা যুক্তিসঙ্গত কারণে। ক্লায়েন্ট বললেন হেডারে একটা নোটিশ বার চাই — একটা প্লাগইন। তারপর ভাসমান হোয়াটসঅ্যাপ বাটন — আরেকটা। ফেসবুক পিক্সেল — আরেকটা, যদিও কাজটা GTM-এর একটা স্ক্রিপ্ট দিয়েই হয়ে যেত। প্রতিটা সিদ্ধান্ত আলাদাভাবে দেখলে ঠিকই ছিল। আঠারো মাস পর যোগফলটা ভুল।
দ্বিতীয় কারণ ওভারল্যাপ। ওই সাইটে Yoast আর Rank Math দুটোই অ্যাক্টিভ ছিল, দুটোই মেটা ট্যাগ বসাচ্ছিল — সোর্স কোডে ডাবল ক্যানোনিকাল ট্যাগ। তিনটা আলাদা প্লাগইন ইমেজ অপটিমাইজ করার দাবি করছিল। তৃতীয় কারণ থিম: প্রিমিয়াম থিমের 'ডেমো ইমপোর্ট' বোতাম চাপলে সেটা সঙ্গে করে সাত-আটটা বান্ডেল প্লাগইন টেনে আনে, যার পাঁচটা আপনি কোনোদিন ব্যবহারই করবেন না। আর চতুর্থ কারণ নিছক ভয় — 'এটা বন্ধ করলে যদি কিছু ভেঙে যায়?' তাই কেউ কিছু সরায় না।
প্রশ্নটা কখনোই 'এই প্লাগইনটা কি কাজের?' হওয়া উচিত নয়। প্রশ্নটা হলো — এটা প্রতি মাসে যে দাম নিচ্ছে (গতি, নিরাপত্তার ঝুঁকি, আপডেটের ঝামেলা), তার বদলে কি সমান কিছু ফেরত দিচ্ছে?
ধাপ ১: রায় দেওয়ার আগে তালিকাটা বানান
একটা স্প্রেডশিট খুলুন, চারটা কলাম: প্লাগইনের নাম; এটা ঠিক কোন কাজটা করে (এক বাক্যে); শেষ কবে আপডেট হয়েছে; আর এটা বন্ধ করলে সাইটের কোন জিনিসটা কাজ করবে না। এই চতুর্থ কলামটাই আসল খেলা। আমাদের ওই ক্লায়েন্টের ৩৮টার মধ্যে ১১টার চতুর্থ কলাম খালি রয়ে গেল — কেউ বলতেই পারল না ওগুলো বন্ধ করলে কী হারাবে। যেটার উত্তর 'জানি না', তার উত্তর আসলে 'কিছু না'।
ধাপ ২: এক কাজের জন্য একটাই প্লাগইন
এটাই পুরো কৌশলের মেরুদণ্ড। এক কাজে একাধিক প্লাগইন থাকলে তারা শুধু রিসোর্স খায় না, একে অন্যের সঙ্গে লড়াই করে — দুটো ক্যাশিং প্লাগইন একসঙ্গে থাকলে সাইট এলোমেলো আউটপুট দেয়, দুটো সিকিউরিটি প্লাগইন একসঙ্গে .htaccess লিখতে গিয়ে সাইট ফেলে দেয়। বাংলাদেশি শেয়ার্ড হোস্টিংয়ের বাস্তবতায় জরুরি প্লাগইনের তালিকাটা আমরা এভাবে সাজাই:
- ক্যাশিং — একটাই। দেশের বেশিরভাগ শেয়ার্ড হোস্ট LiteSpeed সার্ভারে চলে, তাই LiteSpeed Cache প্লাগইনটা ফ্রি হয়েও সবচেয়ে কার্যকর: সার্ভার-লেভেল ক্যাশ, ইমেজ অপটিমাইজেশন আর CSS/JS মিনিফাই একটার ভেতরেই। সার্ভারে LiteSpeed না থাকলে WP Rocket (বছরে প্রায় ৫৯ ডলার) বা ফ্রি বিকল্প হিসেবে Cache Enabler। তিনটা একসঙ্গে রাখার কোনো মানে নেই।
- নিরাপত্তা — একটাই, এবং হালকা। Wordfence-এর 'Live Traffic' ফিচারটা প্রতিটা হিট ডাটাবেসে লিখে রাখে; শেয়ার্ড হোস্টিংয়ে CPU লিমিট পার হওয়ার পেছনে অনেক সময় এটাই আসল অপরাধী। রাখলে Live Traffic বন্ধ রাখুন আর স্ক্যান শিডিউল করুন রাত তিনটায়। এর চেয়ে ভালো পথ — ফ্রি Cloudflare-এ সাইট বসিয়ে বট ট্রাফিক সার্ভারে পৌঁছানোর আগেই আটকে দেওয়া।
- SEO — একটাই। Rank Math, Yoast বা SEOPress, যেটা পছন্দ; কিন্তু একটাই। দুটো একসঙ্গে চললে গুগলের কাছে ডুপ্লিকেট মেটা ট্যাগ যায়, আর আপনার সেটিংসও দুই জায়গায় ভাগ হয়ে পড়ে থাকে।
- ব্যাকআপ — একটাই, আর সেটা সাইটের বাইরে। UpdraftPlus-এর ফ্রি ভার্সনেই সপ্তাহে একবার ফুল ব্যাকআপ Google Drive-এ পাঠানো যায়। হোস্টিং কোম্পানির 'ফ্রি ব্যাকআপ'-এর উপর পুরো ভরসা করবেন না — যেদিন সার্ভার যাবে, সেদিন মনে পড়বে ব্যাকআপটাও ওই সার্ভারেই ছিল।
- ফর্ম ও স্প্যাম — একটাই। Contact Form 7 হালকা, কিন্তু এন্ট্রি সেভ করে না; এন্ট্রিসহ চাইলে Fluent Forms বা WPForms Lite। স্প্যাম ঠেকাতে Akismet-এর বদলে ফ্রি Antispam Bee ব্যবহার করা যায় — এটা ভিজিটরের ডেটা বাইরের সার্ভারে পাঠায় না।
ধাপ ৩: অনুমান বাদ দিন, মেপে দেখুন
'এই প্লাগইনটা মনে হয় ভারী' — এই অনুমানের উপর কাজ করবেন না। Query Monitor (ফ্রি) ইনস্টল করে যেকোনো পেজ খুলুন। এটা দেখাবে ওই পেজে কতগুলো কুয়েরি চলেছে, কোনটা কত মিলিসেকেন্ড নিয়েছে, আর সবচেয়ে দরকারি তথ্য — কোন প্লাগইন সেটা চালিয়েছে। সংখ্যা সামনে এলে তর্ক শেষ। ওই ফ্যাশন সাইটে একটা 'রিলেটেড প্রোডাক্টস' প্লাগইন একাই প্রতি পেজে ৬৪টা কুয়েরি চালাচ্ছিল, অথচ সেই সেকশনটা কেউ ক্লিকই করত না।
দ্বিতীয় মাপকাঠি অটোলোড সাইজ। phpMyAdmin-এ গিয়ে চালান: SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload = 'yes'; — এই সংখ্যাটা প্রতিটা পেজ লোডে মেমরিতে ওঠে। এক মেগাবাইটের নিচে থাকলে স্বস্তি, তিন-চার মেগাবাইট হলে ধরে নিন কোনো প্লাগইন (কিংবা মুছে ফেলা প্লাগইনের রেখে যাওয়া জঞ্জাল) সেখানে বসে আছে। আর প্লাগইন বন্ধ করে পরীক্ষা করার নিরাপদ উপায় হলো Health Check & Troubleshooting — এটা শুধু আপনার নিজের ব্রাউজার সেশনে প্লাগইন ডিঅ্যাক্টিভ করে, ভিজিটররা লাইভ সাইট আগের মতোই দেখতে থাকেন।
ধাপ ৪: যে কাজগুলোর জন্য আসলে প্লাগইনই লাগে না
গুগল অ্যানালিটিক্স বসাতে প্লাগইন লাগে না, GTM-এর একটা স্ক্রিপ্টই যথেষ্ট। হেডারে হোয়াটসঅ্যাপ বাটন, ফুটারে স্বয়ংক্রিয় কপিরাইট সাল, অ্যাডমিন বারে লোগো বদল, WooCommerce চেকআউট থেকে একটা অপ্রয়োজনীয় ফিল্ড লুকানো — এসবের প্রতিটা পাঁচ থেকে বিশ লাইনের কোড। রাখুন চাইল্ড থিমের functions.php-তে, আর কোড ফাইল ছুঁতে অস্বস্তি লাগলে Code Snippets প্লাগইনে (এই একটা প্লাগইনই দশটার কাজ সামলে দেয়)। ৩৮ থেকে ৯-এ নামানোর সময় সাতটা প্লাগইন সরাসরি মোট নব্বই লাইনের স্নিপেটে রূপান্তরিত হয়েছিল।
ধাপ ৫: যেগুলো থাকল, তাদেরও লাগাম টানুন
যে প্লাগইনগুলো সত্যিই দরকার, তারাও ডিফল্ট সেটিংসে বেয়াড়া আচরণ করে — কন্টাক্ট ফর্মের CSS আর JS প্রতিটা পেজে লোড হয়, যদিও ফর্ম আছে মাত্র একটা পেজে। Perfmatters (বছরে প্রায় ২৫ ডলার) বা ফ্রি Asset CleanUp দিয়ে ঠিক করে দিন কোন প্লাগইনের অ্যাসেট কোন পেজে চলবে। শুধু এই একটা কাজে ওই সাইটের হোমপেজের HTTP রিকোয়েস্ট ১১৪ থেকে নেমে ৪১ হয়েছিল। সঙ্গে WooCommerce-এর কার্ট ফ্র্যাগমেন্ট স্ক্রিপ্টটা হোমপেজ ও ব্লগ পেজে বন্ধ করে দিলে আরও এক ধাপ লাভ।
বাংলাদেশি সাইটে যেগুলো সত্যিই বাদ দেওয়া যায় না
'জরুরি প্লাগইন' তালিকা বিদেশি ব্লগ থেকে হুবহু কপি করলে কিছু জিনিস বাদ পড়ে যায়, কারণ আমাদের বাস্তবতা আলাদা। পেমেন্ট গেটওয়ে — SSLCommerz, aamarPay বা bKash-এর অফিশিয়াল WooCommerce প্লাগইন; এখানে 'হালকা' বিকল্প খোঁজার সুযোগ নেই, যেটা গেটওয়ে কোম্পানি নিজে মেইনটেইন করে সেটাই নিন, কারণ ওদের API বদলালে ওরাই আপডেট দেবে। কুরিয়ার ইন্টিগ্রেশন — Steadfast, Pathao বা RedX-এর প্লাগইন দিয়ে অর্ডার থেকে সরাসরি কনসাইনমেন্ট তৈরি হলে দিনে ঘণ্টাখানেকের ম্যানুয়াল কাজ বাঁচে। আর অর্ডার কনফার্মেশনের জন্য একটা লোকাল SMS গেটওয়ে প্লাগইন, কারণ এদেশে অর্ডার কনফার্ম হয় ফোনে, ইমেইলে নয়।
যে প্রশ্নগুলো প্রায় প্রতিবারই ওঠে
তাহলে কি কম প্লাগইন মানেই ভালো সাইট? না, সংখ্যাটা নিজে কোনো লক্ষ্য নয়। পাঁচটা বাজে প্লাগইন পঁচিশটা ভালো প্লাগইনের চেয়ে বেশি ক্ষতি করতে পারে। আসল মাপকাঠি হলো প্রতি পেজ লোডে কতগুলো কুয়েরি চলছে আর সার্ভার প্রথম বাইট পাঠাতে কত সময় নিচ্ছে। বিশটা হালকা, ভালোভাবে মেইনটেইন করা প্লাগইন নিয়েও সাইট দ্রুত চলতে পারে।
পেজ বিল্ডার (Elementor, Divi) কি বাদ দিতে হবে? বাদ দিতে হবে না, তবে বুঝে নিন এটা নিছক একটা প্লাগইন নয় — এটা একটা প্ল্যাটফর্ম সিদ্ধান্ত, এবং সাধারণত সাইটের সবচেয়ে ভারী অংশ। ব্যবহার করলে বিল্ডারের উপর আবার অ্যাড-অন প্লাগইনের স্তূপ (Essential Addons, তারপর Premium Addons, তারপর আরও দুটো) চাপাবেন না। একটাই অ্যাড-অন প্যাক রাখুন, আর তার সেটিংসে ঢুকে অব্যবহৃত উইজেটগুলো বন্ধ করে দিন — বেশিরভাগ প্যাকে এই সুইচটা থাকে, কেউ ব্যবহার করে না।
ডিঅ্যাক্টিভ করা প্লাগইন কি সাইট ধীর করে? ধীর করে না, কিন্তু নিরাপদও নয়। ডিঅ্যাক্টিভ প্লাগইনের ফাইলগুলো সার্ভারে থেকেই যায়, আর তার কোনো একটায় দুর্বলতা থাকলে আক্রমণকারী সরাসরি ওই ফাইলে রিকোয়েস্ট পাঠিয়ে ঢুকে পড়তে পারে — ওয়ার্ডপ্রেস তখনো ফাইলটা লোড করেনি বলে কিছু আটকাবেও না। ব্যবহার না করলে ডিঅ্যাক্টিভ নয়, ডিলিট করুন।
প্রিমিয়াম প্লাগইনের পেছনে বছরে টাকা ঢালা কি দরকার? যেটা টাকার লেনদেন বা নিরাপত্তা ছোঁয়, সেখানে হ্যাঁ। একটা WooCommerce স্টোরের জন্য বছরে সাত-আট হাজার টাকার লাইসেন্স মানে নিয়মিত সিকিউরিটি প্যাচ আর একটা সাপোর্ট ঠিকানা। বিনামূল্যে পাওয়া 'nulled' ভার্সন বসিয়ে যে টাকাটা বাঁচালেন, একটা ম্যালওয়্যার ক্লিনআপ আর গুগলের ব্ল্যাকলিস্ট থেকে বেরোনোর খরচ তার কয়েক গুণ।
ইনস্টল বোতাম চাপার আগে যে চেকলিস্টটা মিলিয়ে নেবেন
- এই কাজটা কি ইতিমধ্যে থাকা কোনো প্লাগইন, বা থিম নিজেই, করতে পারে?
- এটা কি চাইল্ড থিমে বিশ লাইনের একটা স্নিপেটে হয়ে যায়?
- WordPress.org-এ শেষ আপডেট কবে হয়েছে? ছয় মাসের বেশি হলে থামুন।
- এক কাজের জন্য দুটো প্লাগইন হয়ে যাচ্ছে না তো?
- Query Monitor দিয়ে ইনস্টলের আগে ও পরে কুয়েরি সংখ্যা মিলিয়ে দেখেছেন?
- অব্যবহৃত প্লাগইন শুধু ডিঅ্যাক্টিভ করে রাখেননি তো — ডিলিট করেছেন?
- বদলটা শুরু করার আগে একটা পূর্ণ ব্যাকআপ নেওয়া আছে তো?
ওই ফ্যাশন সাইট এখন ৯টা প্লাগইনে চলে। হোমপেজের কুয়েরি ২৭০ থেকে নেমে ৫২, লোড টাইম ১.৯ সেকেন্ড, আর হোস্টিং ফিরে গেছে সেই সাড়ে তিন হাজার টাকার প্ল্যানেই — বারো হাজারের প্ল্যানটা শেষ পর্যন্ত লাগেনি। Stack Alix-এ আমরা ওয়ার্ডপ্রেস সাইটের প্লাগইন অডিট করি, ধীর সাইটের আসল কারণ খুঁজে বের করি, আর দরকার হলে দশটা প্লাগইনের কাজ একটা পরিষ্কার কাস্টম স্নিপেটে নামিয়ে আনি। আপনার সাইট যদি হোস্টিং লিমিট ছুঁয়ে ফেলে, একবার কথা বলুন — সমাধানটা প্রায় কখনোই বড় সার্ভার নয়, ছোট প্লাগইন তালিকা।

