Yii ফ্রেমওয়ার্কের অ্যাসেট প্যাকেজ ম্যানেজমেন্ট (Asset Package Management) হল ওয়েব অ্যাপ্লিকেশনের স্টাইল শীট (CSS), জাভাস্ক্রিপ্ট (JS), এবং অন্যান্য ফ্রন্টএন্ড রিসোর্সকে কার্যকরভাবে পরিচালনা এবং অপটিমাইজ করার একটি শক্তিশালী ব্যবস্থা। Yii 2 ফ্রেমওয়ার্ক অ্যাসেট ম্যানেজমেন্টের জন্য একটি নির্দিষ্ট সিস্টেম প্রদান করে, যার মাধ্যমে আপনি আপনার অ্যাসেট ফাইলগুলি সংগঠিত, কনফিগার এবং অপ্টিমাইজ করতে পারবেন।
অ্যাসেট প্যাকেজের মাধ্যমে আপনি CSS এবং JavaScript ফাইলগুলোকে একত্রিত করে, কমপ্রেস (minify) করে এবং ক্যাশিং এর মাধ্যমে রিফ্রেশ করতে পারবেন। এটি অ্যাপ্লিকেশনের পারফর্মেন্স এবং লোডিং স্পিড উন্নত করতে সাহায্য করে।
অ্যাসেট প্যাকেজ কী?
অ্যাসেট প্যাকেজ হল একটি বা একাধিক ফ্রন্টএন্ড রিসোর্সের সমন্বয়, যেমন CSS, JavaScript, Fonts, Images, ইত্যাদি। Yii ফ্রেমওয়ার্ক অ্যাসেট প্যাকেজ ব্যবহার করে এই রিসোর্সগুলো একত্রিত করে সেগুলিকে অ্যাপ্লিকেশনের ভিউতে যোগ করে।
অ্যাসেট প্যাকেজ ব্যবহারের মূল উদ্দেশ্য হল:
- রিসোর্সগুলোকে একত্রিত এবং কম্প্রেস করা।
- ফাইল লোডিংয়ের গতি বাড়ানো।
- একাধিক পৃষ্ঠায় একই রিসোর্স পুনরায় লোড না করা।
Yii 2-এ অ্যাসেট প্যাকেজ তৈরি করা
Yii 2 ফ্রেমওয়ার্কে অ্যাসেট প্যাকেজ ক্লাসের মাধ্যমে অ্যাসেট ফাইলগুলোকে ম্যানেজ করা হয়। আপনি নিজের কাস্টম অ্যাসেট প্যাকেজ তৈরি করে সেটি আপনার ভিউ ফাইলের সাথে যুক্ত করতে পারেন।
১. অ্যাসেট প্যাকেজ ক্লাস তৈরি করা
প্রথমে আপনাকে একটি অ্যাসেট ক্লাস তৈরি করতে হবে। অ্যাসেট ক্লাসটি yii\web\AssetBundle ক্লাস থেকে ইনহেরিট করবে এবং এর মধ্যে অ্যাসেট ফাইলগুলো সংজ্ঞায়িত করতে হবে।
namespace app\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
// CSS ফাইলগুলোর পাথ
public $css = [
'css/site.css', // CSS ফাইল
];
// JS ফাইলগুলোর পাথ
public $js = [
'js/site.js', // JavaScript ফাইল
];
// নির্দিষ্ট ডিপেনডেন্সি (যদি থাকে)
public $depends = [
'yii\web\YiiAsset', // Yii এর বেস অ্যাসেট
'yii\bootstrap\BootstrapAsset', // Bootstrap এর অ্যাসেট
];
}
এখানে:
- $basePath: অ্যাসেট ফাইলগুলির লোকাল ডিরেক্টরি।
- $baseUrl: অ্যাসেট ফাইলগুলির URL পাথ।
- $css: অ্যাসেট প্যাকেজে যোগ করা CSS ফাইল।
- $js: অ্যাসেট প্যাকেজে যোগ করা JS ফাইল।
- $depends: যদি আপনার অ্যাসেট অন্য অ্যাসেট প্যাকেজগুলির উপর নির্ভর করে, তবে তা এখানে নির্দিষ্ট করতে হবে।
২. অ্যাসেট প্যাকেজকে ভিউ ফাইলে যোগ করা
আপনি যেখানেই এই অ্যাসেট প্যাকেজটি ব্যবহার করতে চান, সেই ভিউ ফাইল বা কন্ট্রোলারে এটি ইনক্লুড করতে হবে।
use app\assets\AppAsset;
AppAsset::register($this);
এটি আপনার ভিউতে site.css এবং site.js অ্যাসেট ফাইলগুলো যোগ করবে এবং নির্ধারিত ডিপেনডেন্সি অনুযায়ী অন্যান্য অ্যাসেটও অটোমেটিক্যালি লোড হবে।
অ্যাসেট প্যাকেজের অপটিমাইজেশন
Yii 2 ফ্রেমওয়ার্কে অ্যাসেট অপটিমাইজেশন বেশ সহজ। আপনি assetManager কম্পোনেন্টের মাধ্যমে অ্যাসেট ফাইলগুলো কম্প্রেস এবং ক্যাশ করতে পারেন।
১. অ্যাসেট কম্প্রেশন (Minification)
Yii 2 ফ্রেমওয়ার্ক অ্যাসেট ফাইলগুলোর মিনিফিকেশন (minification) সমর্থন করে, অর্থাৎ, আপনার CSS এবং JS ফাইলগুলিকে ছোট আকারে কম্প্রেস করা যায়। এটি অ্যাসেট ফাইলগুলির সাইজ কমায় এবং লোডিং স্পিড বাড়ায়।
'components' => [
'assetManager' => [
'linkAssets' => true,
'bundles' => [
'yii\web\JqueryAsset' => [
'js' => ['https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'],
],
],
'forceCopy' => YII_ENV_DEV, // ডেভেলপমেন্ট এনভায়রনে ফাইল কপি করা হবে
],
],
এখানে:
- linkAssets: এটি
trueকরা হলে, ফাইলগুলোকে সিস্টেমের ফাইল সিস্টেমে লিংক করা হবে। - forceCopy: ডেভেলপমেন্ট মোডে অ্যাসেটগুলো পুনরায় কপি করা হবে, প্রোডাকশন মোডে এটি অফ করা যেতে পারে।
২. ক্যাশিং (Caching)
Yii 2 ক্যাশিং মেকানিজম ব্যবহার করে অ্যাসেট ফাইলগুলোর ক্যাশ ম্যানেজ করতে সহায়তা করে। এটি রিসোর্সগুলো ক্যাশে সংরক্ষণ করে যাতে বার বার ফাইলগুলো রেন্ডার না করতে হয়, ফলে লোডিং স্পিড বাড়ে।
'components' => [
'assetManager' => [
'appendTimestamp' => true, // ক্যাশিং লিঙ্কের সাথে টেম্পস্ট্যাম্প অ্যাড করা
],
],
এটি ইউআরএলে টেম্পস্ট্যাম্প যোগ করবে, যাতে ক্যাশ লোড হয় না এবং নতুন অ্যাসেট ফাইলগুলো লোড হয়।
অ্যাসেট প্যাকেজের কাস্টম রুলস
আপনি চাইলে কাস্টম অ্যাসেট প্যাকেজ তৈরি করতে পারেন এবং সেগুলো আপনার অ্যাপ্লিকেশনে ব্যবহার করতে পারেন।
namespace app\assets;
use yii\web\AssetBundle;
class CustomAsset extends AssetBundle
{
public $css = [
'css/custom.css',
];
public $js = [
'js/custom.js',
];
public $depends = [
'yii\web\JqueryAsset',
];
}
এখানে, CustomAsset নামক একটি নতুন অ্যাসেট প্যাকেজ তৈরি করা হয়েছে যা custom.css এবং custom.js ফাইলগুলিকে ইনক্লুড করবে।
সারাংশ
Yii ফ্রেমওয়ার্কে অ্যাসেট প্যাকেজ ম্যানেজমেন্ট একটি শক্তিশালী ফিচার যা আপনাকে ফ্রন্টএন্ড রিসোর্সগুলোকে একত্রিত, কম্প্রেস এবং ক্যাশ করার সুবিধা প্রদান করে। AssetBundle ক্লাস ব্যবহার করে আপনি অ্যাসেট ফাইলগুলো নির্দিষ্ট করতে পারেন এবং assetManager কম্পোনেন্টের মাধ্যমে এগুলো অপটিমাইজ করতে পারেন। অ্যাসেট প্যাকেজ ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনের লোডিং স্পিড এবং পারফর্মেন্স উন্নত হয়।
Read more