ওয়ার্ডপ্রেস দ্রুতগতি করণ-১

গুরুগম্ভীর আলোচনায় যাওয়ার আগে আসুন একটা পরিস্থতি চিন্তা করি। আপনি একটা সাইটে ঢোকার চেষ্টা করছেন। এমনিতেই নেট কানেকশন এর বেহাল দশা, তার ওপরে সাইট লোডিং হচ্ছে তো হচ্ছেই। একটা পর্যায়ে আপনি বিরক্ত হয়ে বলেন, যাহ ঘোড়ার সাইট, দেখলাম না তোর আর্টিকেল। বিশ্বাস করুন, আপনি নিজেও অনেকবার এমন পরিস্থিতে পরেছেন। এভাবে বের হয়ে এসেছেন অসংখ্য সাইট থেকে। এখন ভাবুন, আপনার সাইটে এসে একজন যখন একই পরিস্থিতির সম্মুখিন হবে, তখন সে কি করবে? শুধুমাত্র আপনার সাইট স্লো হওয়ার কারনে আপনি অসংখ্য ভিজিটর হারাচ্ছেন, এবং আপনার সাইটে যদি অ্যাডভার্টাইজমেন্ট থেকে থাকে, তবে একই সাথে বেশ কিছু অ্যাড রেভিনিউ ও হারাচ্ছেন।

বললে হয়তো বিশ্বাস করবেন না, তবে ওয়ার্ডপ্রেস সাইট কে ফাষ্ট করে তোলা আসলেই সহজ। স্রেফ অল্প কিছু কাজ করে আপনি আপনার সাইটকে অনেক বেশি ফাষ্ট করতে পারেন। ধাপে ধাপে সে ব্যাপারে আলোচনা করবো। আমি চেষ্টা করবো যতোটা সম্ভব সহজভাবে এবং বিস্তারিত ব্যাখ্যা করতে।

জঞ্জালময় ডাটাবেজ

ওয়ার্ডপ্রেসের সাম্প্রতিক সময়ের ভার্সন গুলোতে পোষ্ট রিভিশন নামে একটা আলাদা ফিচার যোগ করা হয়েছে। প্রতি ৬০ সেকেন্ডে ওয়ার্ডপ্রেস একবার আপনার পোষ্ট ড্রাফট হিসাবে সেভ করে আপনি সেটা পাবলিশ না করা পর্যন্ত। এরপর যতোবার আপনি কোন পরিবর্তন আনবেন, আগের সেভ গুলো ডাটাবেজে রয়ে যায়। কোন কারনে আপনি যাতে পূর্বের কোন ভার্সন এ ফেরত যেতে পারেন। নিঃসন্দেহে একটা ভালো ফিচার। তবে একই সাথে ঝামেলারও। কিভাবে? বাস্তব উদাহরন দিয়ে ব্যাখ্যা করি।

মনে করুন আপনি দৈনিক ঘোড়ার ডিম পত্রিকার একজন গ্রাহক। প্রতিদিন হকার আপনাকে পত্রিকা দিয়ে যায়, আপনি সেগুলো পড়ে হলে একটা সেলফে রাখেন। সেখানে গত তিন মাসের প্রতিদিনের সব কপি আছে। সেই সাথে আরও ৫ টা দৈনিক পত্রিকার তিন মাসের সমস্ত পত্রিকার কপি আছে সেখানে। এখন, ধরুন আপনার এক বন্ধু আপনাকে বললো, আবুল এন্টারপ্রাইজের একটা জব সার্কুলার এসেছে কোন একটা দৈনিক এর ফেব্রুয়ারী মাসের ৩১ তারিখের পত্রিকায়। সেখানে অ্যাপ্লাই করার জন্য। এখন সেই জব সার্কুলার খুঁজে বের করার জন্য আপনাকে র‍্যাক থেকে প্রতিটা পত্রিকা নামিয়ে দেখতে হবে ফেব্রুয়ারী মাসের ৩১ তারিখের। এমনিতেই আপনাকে গাদা গাদা পত্রিকার মধ্যে থেকে ফেব্রুয়ারী মাসের ৩১ তারিখের পত্রিকা বের করতে হবে, তার ওপরে আবার মোট ৬ টা পত্রিকা রাখেন আপনি। প্রতিটাই খুঁজে দেখতে হবে। মানে বিশাল জায়গা এমনিতেই দখল হচ্ছে, তার ওপরে কাজের জিনিস খুঁজে বের করতে গিয়ে মূল্যবান সময় নষ্ট হচ্ছে।

ডাটাবেজ এর ক্ষেত্রেও ব্যাপারটা এমন। এমনিতেই ডাটাবেজ কে ইনডেক্স ধরে খুঁজে বের করতে হয় আপনি কোন আর্টিকেলটা দেখতে চাচ্ছেন, তার ওপরে আবার গাদা গাদা রিভিশন থাকায় ডাটাবেজ এর সাইজ বিশাল, পারফর্মেন্স এর ওপরও প্রভাব পড়ছে। এই জঞ্জাল থেকে মুক্তি উপায় কি?

প্রথম উপায় হলো, ওয়ার্ডপ্রেসকে বলে দেওয়া, বাপ, আমার এতো রিভিশন দরকার নাই, তোমার খুব শখ হলে একটা রিভিশন রাখতে পারো, এর চেয়ে বেশী রাখতে পারবা না। সে জন্য আপনাকে ছোট্ট একটা কাজ করতে হবে, wp-config.php ফাইলে একটা পিচ্চি লাইন যোগ করে দিতে হবে। এতে করে ওয়ার্ডপ্রেস বুঝতে পারবে আপনি ১ টার বেশী রিভিশন রাখতে নারাজ। অনেক ডেভেলপার সাজেষ্ট করেন রিভিশন একদমই বন্ধ করে দিতে, তবে আমার ব্যাক্তিগত চিন্তা হলো মানূষ ভুল করতেই পারে। এবং সে জন্য একটা অরিজিনাল কপি থাকা দরকার যাতে সে সেখানে ব্যাক করতে পারে ভুল করলে।

 

এটাতো গেলো এক ঘটনা। এই ঘটনাই শেষ নয়, আরও ঘটনা আছে। ডাটাবেজে আরও অনেক গার্বেজ ফাইল থাকে। যেগুলোর আসলেই কোন দরকার নেই। এগুলো একই সাথে ডাটাবেজ এর সাইজ বাড়ায়, সেই সাথে পার্ফমেন্সেও ঝামেলা পাকায়।

এখন ডাটাবেজ এ ঢুকে লাইন বাই লাইন তো গার্বেজ ক্লিয়ার করা সম্ভব না, অনেক জটিল এবং সময়সাপেক্ষ একটা ব্যাপার। আপনাকে সেই অন্ধকার জগতে আলোর দিশা দেখাতে রয়েছে Wp-Optimize প্লাগিনটি। এর কাজ হলো আপনাকে ঝামেলা থেকে বাঁচিয়ে ডাটাবেজ থেকে অপ্রয়োজনীয় তথ্য সরিয়ে ডাটাবেজকে সুস্থ সবল তরতাজা রাখা। এই প্লাগিনের বেশ কিছু অপশন রয়েছে। সেগুলো ঠিকমতো কনফিগার করে রান করলেই কাজ শেষ। নাকে তেল দিলে খারাপ দেখায়, মাথায় তেল দিয়ে ঘুমান।

সার্ভার সাইড ক্যাশ এবং ব্রাউজার ক্যাশ

ক্যাশ জিনিসটা কি? টেকনিক্যাল ব্যাখ্যা দিতে গেলে আপনারা লাঠি হাতে আমাকে তাড়া করবেন। সহজ বাংলায় বলি। একটা PHP-MySQL অ্যাপ্লিকেশন কিভাবে কাজ করে? আপনি একটা পেজ দেখতে চান, পি এইচ পি সেই রিকোয়েষ্ট ডাটাবেজ এর কাছে পাঠিয়ে জানতে চায়, স্যার, অমুক জন অমুক পেজটা দেখতে চায়, ঐটা কি আছে? ধরুন ডাটাবেজ বললো, হ্যাঁ আছে, এই নাও। পি এইচ পি সেই পেজ এর ডাটা ডাটাবেজ থেকে সংগ্রহ করে সেটাকে প্রসেস করে HTML এ কনভার্ট করে ব্রাউজারকে বলে দেয়, এই নাও ভাই, এই পেজটা দিলাম। এটাকে ঠিকমতো দেখিও। ব্রাউজার সেটাকে আপনার কাছে প্রদর্শন করে। এখন প্রতিবার একই ডাটা বার বার পি এইচ পি’র মাধ্যমে ডাটাবেজ থেকে সংগ্রহ করে প্রসেসিং করতে একই সাথে প্রচুর প্রসেসিং পাওয়ার এবং মেমরী নষ্ট হয়। এই জন্য চতুর ডেভেলপাররা এক পন্থা বের করলো, যাকে বলে ক্যাশ।

আগে বুঝাই সার্ভার সাইড ক্যাশ কি। পরিস্থিতিটা ব্যাখ্যা করি। বুঝতে সুবিধে হবে। ধরুন পি এইচ পি আবার ডাটাবেজ এর কাছে রিকোয়েষ্ট পাঠিয়েছে একটা ডাটা চেয়ে। ডাটাবেজ ডাটা ফেরত পাঠালো। সেই ডাটা পি এইচ পি ব্রাউজার এর কাছে পাঠালো। সেই ফাঁকে, পি এইচ পি সেই প্রসেস করা ডাটা একটা HTML ফাইলে সেভ করে রাখলো। এরপর ধরেন আরেকজন সেই একই পেজ দেখতে চাইলো। পি এইচ পি আগে থেকেই সার্ভারকে বলে রেখেছেন, ঐ পেজ যদি কেউ চায়, তাহলে আমাকে বিরক্ত করার দরকার নেই। ঐ যে HTML ফাইল সেভ করে রেখেছি, ঐটা ধরায়ে দাও। তাই সার্ভার আর পি এইচ পি কে ডিষ্টার্ব করলো না। ঐ HTML পেজটা এনে আপনাকে দেখিয়ে দিলো। যেহেতু আগে থেকেই সেভ করা, অনেক ফাষ্ট হলো, আবার প্রসেসিং পাওয়ার ও মেমরীও বেঁচে গেলো। তবে এটাই একমাত্র ক্যাশে পদ্ধতি নয়। এই পেজ সেভ করাকে আরও নানা ভাবে নানা জায়গায় ক্যাশ করে সেটাকে আরও দ্রুত করার পদ্ধতি আছে। তবে বেসিক আইডিয়াটা এমনি।

ব্রাউজার ক্যাশের ব্যাপারটা হলো, পেজটা যখন ব্রাউজারে ফেরত এলো, তখন সার্ভার ব্রাউজারকে বলে দিলো, তুমি বাপু আমাকে বার বার বিরক্ত করো না, যা লাগে নিজের পেটের মধ্যে জমা রাখো, লাগলে সেখান থেকে দিয়ে দিবা। ব্রাউজার তখন ইমেজ ফাইল, মিডিয়া ফাইল, সি এস এস ফাইল, জাভাস্ক্রিপ্ট ফাইল এবং টেক্সট ডাটা আপনার হার্ডড্রাইভে সেভ করে রাখে। এরপর যখন আপনি আবার ঐ পেজ এ ঢুকবেন, তখন ব্রাউজার সরাসরি আপনার হার্ডড্রাইভ থেকে ফাইল পাঠিয়ে দেয়। তবে ফাইল সেভ করার সময় সার্ভার এটাও বলে দেয়, ফাইল গুলো কতোদিনের জন্য সেভ করে রাখতে হবে। এতে করে যদি সেই ডেট পার হয়ে যায়, তবে ব্রাউজার সার্ভার এর কাছে রিকোয়েষ্ট পাঠিয়ে আবার সেই ফাইলগুলো ক্যাশে করে নেয়। এ পদ্ধতি নিয়ে ইমরান আহমেদ ভাইয়ের চমৎকার একটি লেখা রয়েছে ওয়ার্ডপ্রেস কুক বুকে।

আর যদি আপনি সব কিছু নিজে নিজে করতে চান, সেক্ষেত্রে W3 Total Cache কিংবা WP Super Cache হতে পারে আপনার নতুন বেষ্ট ফ্রেন্ড। এই দুইটি প্লাগিনই দুই ধরনের ক্যাশের জন্য প্রয়োজনীয় সমস্ত কাজ সম্পন্ন করে। তবে সঠিক ভাবে কনফিগার করতে না পারলে হিতে বিপরীত হতে পারে।

ঘোড়ার ডিম প্লাগিন

ওয়ার্ডপ্রেসে এমন অসংখ্য প্লাগিন আছে, যেগুলো তাদের কাজ করতে গিয়ে সাইটকে স্লো বানিয়ে দিতে পারে। পি এইচ পি তে প্রচুর কাজ করে, কিংবা ডাটাবেজ এ প্রচুর রিকোয়েষ্ট পাঠিয়ে কিংবা এক গাদা সি এস এস / জাভাস্ক্রিপ্ট ফাইল থিমের মধ্যে ঢুকিয়ে দিয়ে। ওয়ার্ডপ্রেসে প্রায় প্রতিটা প্লাগিনেরই অল্টারনেটিভ আছে, একটা দিয়ে না হলে আরেকটা আছে। তাই কোন একটা ঝামেলা করলেও সেটাকে রেখে দিতে হবে কারন তার কোন অল্টারনেটিভ নেই, এমন সম্ভবনা খুবই কম। কিন্তু কিভাবে বুঝবেন ঝামেলা পাকাচ্ছে কোন প্লাগিন? এ জন্য রয়েছে P3. অসাধারন এই প্লাগিন এর কাজ হলো অন্য প্লাগিনদের ওপরে নজর রাখা, কেউ বেশি ঝামেলা করলেই আপনাকে জানিয়ে দেবে এই ব্যাটা ইঁচড়ে পাকামো করছে, একে কান ধরে বের করে দেওয়া যায়। সেই সাথে নানা রকম সুন্দর সুন্দর গ্রাফ দিয়ে ইঁচড়ে পাকামোর হিসাব কিতাবও আপনাকে বুঝিয়ে দেবে। এটা অবশ্যই ইন্সটল করে রাখার মতো একটা প্লাগিন।

অমানবিক ইমেজ এর ব্যবহার

অনেকেই আছেন, যারা ক্যামেরা থেকে ছবি তুলে সরাসরি আপলোড করে দেন। আপনি যদি ফটোগ্রাফার হন, তাহলে সেটা ঠিক আছে, কারন ফটোগ্রাফির ক্ষেত্রে ছবির কোয়ালিটি এবং ডিটেইলস অনেক বড় একটা বিষয়। কিন্তু আপনি যদি একটা সাধারন সাইটে এক গাদা র ( RAW) ছবি দিয়ে রাখেন, তাহলে বিপদ। প্রথমত, আপনাকে বুঝতে হবে সবার নেট কানেকশন একই গতির না। ফলে আমেরিকায় বসে যার জণ্য এক সেকেন্ড লাগবে ছবিটা লোড করতে, বাংলাদেশে বসে আরেকজনের ২ মিনিটেও সেই ছবিটা লোড নাও হতে পারে। দ্বিতীয়ত, প্রতিটা ছবিতেই এক্সট্রা অনেক কিছু থাকে যা ছবির সাইজ বাড়িয়ে দেয়। সেগুলো বাদ দিয়ে + ছবিকে কমপ্রেস করলে ছবির সাইজ অনেক কমে আসে। ছবির কোয়ালিটি ঠিক রেখে ছবিকে কমপ্রেস করাকে বলাহয় লসলেস কমপ্রেশন। এ জন্য ইয়াহুর বদৌলতে ওয়ার্ডপ্রেসে একটা খুবই কাজের প্লাগিন রয়েছে। WP Smush-it । এই প্লাগিনের কাজ হলো, ছবি থেকে এক্সট্রা ডাটা বাদ দিয়ে সেটাকে লসলেস কমপ্রেশন করা। আপনি মিডিয়া লাইব্রেরী থেকে একটা একটা করে ছবি কমপ্রেস করতে পারেন। কিংবা সেটিংস থেকে গিয়ে যতো ছবি আছে সব একবারে কমপ্রেস করতে পারেন। সেই সাথে এরপর থেকে যেসকল ছবি আপলোড করা হবে, সেগুলোও যাতে আপলোড করার সাথে সাথেই কমপ্রেস হয়ে যায়, সেটাও নিশ্চিত করে এই প্লাগিন।

আজকে এই পর্যন্তই। পরের পর্বে থাকবে ফাইল মিনিফাই করা সহ আরও কিছু বিষয়। এই লেখাগুলোতে আমি চেষ্টা করছি যারা শেয়ার্ড হোষ্টিং ব্যাবহার করেন, তাদের সুবিধার্থে লেখার জন্য। লেখাটা কেমন হলো কমেন্টে অবশ্যই জানাবেন। সেই সাথে প্রশ্ন থাকলেও।

8 thoughts on “ওয়ার্ডপ্রেস দ্রুতগতি করণ-১”

  1. ভাই একটা জিনিস সাজেশন দেন,
    ১।কোড ক্যাননের লেয়ার / রেভ্যালুশন স্লাইডার গুলি পারসোনাল সাইটে ব্যাবহার করা দরকার আছে? নাকি সাধারন ব্যাবহারকারি দের জন্য এগুলি বানানো হইছে , সাধারন বলতে বুঝাইছি যারা ওয়ার্ডপ্রেস ডেভেলপার না, মানে ক্লাইন্ট যারা কোড না বুঝলেও ব্যাবহার করতে পারবে ?
    ২। প্লাগিন গুলিতে এত বেশি অপশন দেওয়া ,আমার তো সব দরকার নাই, আমি কেন ব্যাবহার করব ? যদি নিজেই সিম্পল একটা ছোট স্লাইডার বানাই নিতে পারি ? আবার এটা ও ঠিক যারা লেয়ার / রেভ্যালুশন স্লাইডার গুলি বানাইছে তারা আমার চেয়ে কোটি গুন ভাল ডেভেলপার। সাইটের লোডিং এর উপর এর কোন প্রভাব আছে ?
    ধন্যবাদ

  2. আপনার উপস্থাপন কৌশল অনুকরণীয়-অনুসরণীয়। এখানে দে’য়া প্রত্যেকটি টিপসই এ্যাপ্লাই করেছি।
    অনেক, অনেক, অ-নে-ক থ্যাঙ্কস আপনাকে। এরচে’ বেশি কিছু বলার মতো ভাষা আমার মতো হাতুড়ে ডাংতারের জানা নাই।
    শুভকামনা রইল।

Leave a Reply

Your email address will not be published. Required fields are marked *