Zend Framework (এখন Laminas) অ্যাপ্লিকেশনে ক্যাশিং ব্যবহৃত হয় কর্মক্ষমতা উন্নত করার জন্য, ডাটা পুনরায় প্রক্রিয়া করার প্রয়োজনীয়তা কমাতে, এবং ইউজার অভিজ্ঞতা উন্নত করার জন্য। ক্যাশিং স্টোরেজ হিসাবে বিভিন্ন ধরনের স্টোরেজ সিস্টেম ব্যবহার করা যেতে পারে, যেমন File, Memory, এবং Redis।
এখানে, আমরা এই তিনটি স্টোরেজ সিস্টেমের ক্যাশিং কনফিগারেশন এবং ব্যবহারের পদ্ধতি আলোচনা করব।
১. File ক্যাশিং কনফিগারেশন
File ক্যাশিং স্টোরেজ একটি সাধারণ ক্যাশিং পদ্ধতি যেখানে ক্যাশ করা ডাটা ফাইল সিস্টেমে সংরক্ষণ করা হয়। এটি সাধারণত ছোট-পরিসরের অ্যাপ্লিকেশন বা অ্যাপ্লিকেশনের এমন অংশগুলির জন্য ব্যবহার করা হয় যেখানে ডাটা খুব বেশি পরিবর্তন হয় না।
File ক্যাশিং কনফিগারেশন
প্রথমে, আপনাকে ক্যাশিং ব্যবহারের জন্য Zend Framework এর Zend\Cache কম্পোনেন্ট ইন্সটল করতে হবে।
composer require laminas/laminas-cache
এরপর, File ক্যাশিং কনফিগার করতে, module.config.php ফাইলে সেটিংস করতে হবে।
module.config.php:
<?php
return [
'cache' => [
'adapter' => [
'name' => 'filesystem',
'options' => [
'cache_dir' => 'data/cache', // ক্যাশ ফাইল সংরক্ষণের ডিরেক্টরি
'ttl' => 3600, // ক্যাশের TTL (Time To Live) - 1 ঘন্টা
],
],
'plugins' => [
'serializer' => true,
],
],
];
এখানে cache_dir নির্দেশ করে যে ক্যাশ ফাইলগুলো কোথায় সংরক্ষণ হবে এবং ttl সেট করে ক্যাশের মেয়াদ।
ক্যাশ ব্যবহার
ক্যাশ সেট করার জন্য Zend\Cache ব্যবহার করা হবে। উদাহরণস্বরূপ, কন্ট্রোলারে একটি সিম্পল ক্যাশ সেট করা যেতে পারে:
use Laminas\Cache\StorageFactory;
class ProductController extends AbstractActionController
{
public function indexAction()
{
$cache = StorageFactory::adapterFactory('filesystem', [
'cache_dir' => 'data/cache',
'ttl' => 3600,
]);
// ক্যাশে ডাটা চেক করা
$cachedData = $cache->getItem('product_list', $success);
if (!$success) {
// ক্যাশে ডাটা না থাকলে, নতুন ডাটা তৈরি করুন
$productList = ['Product 1', 'Product 2', 'Product 3'];
// নতুন ডাটা ক্যাশে সেভ করা
$cache->setItem('product_list', $productList);
} else {
// ক্যাশ থেকে ডাটা রিট্রিভ করা
$productList = $cachedData;
}
return new ViewModel(['products' => $productList]);
}
}
এখানে getItem() মেথড ব্যবহার করে ক্যাশে ডাটা চেক করা হয় এবং যদি ডাটা না পাওয়া যায়, তবে তা ক্যাশে সেভ করা হয়।
২. Memory ক্যাশিং কনফিগারেশন
Memory ক্যাশিং স্টোরেজ ইন-মেমরি ক্যাশিং ব্যবহারের জন্য উপযুক্ত, যেখানে ক্যাশ করা ডাটা RAM এ সংরক্ষিত থাকে এবং দ্রুত অ্যাক্সেসযোগ্য হয়। এটি উচ্চ পারফরম্যান্স এবং কমপ্লেক্স ক্যাশিং সিস্টেমের জন্য উপযুক্ত।
Memory ক্যাশিং কনফিগারেশন
module.config.php ফাইলে Memory ক্যাশের কনফিগারেশন করুন:
<?php
return [
'cache' => [
'adapter' => [
'name' => 'memory',
'options' => [
'ttl' => 3600, // ক্যাশের TTL (Time To Live)
],
],
'plugins' => [
'serializer' => true,
],
],
];
ক্যাশ ব্যবহার
এখানে, ইন-মেমরি ক্যাশ ব্যবহারের একটি উদাহরণ:
use Laminas\Cache\StorageFactory;
class ProductController extends AbstractActionController
{
public function indexAction()
{
$cache = StorageFactory::adapterFactory('memory', [
'ttl' => 3600,
]);
// ক্যাশে ডাটা চেক করা
$cachedData = $cache->getItem('product_list', $success);
if (!$success) {
// ক্যাশে ডাটা না থাকলে, নতুন ডাটা তৈরি করুন
$productList = ['Product 1', 'Product 2', 'Product 3'];
// নতুন ডাটা ক্যাশে সেভ করা
$cache->setItem('product_list', $productList);
} else {
// ক্যাশ থেকে ডাটা রিট্রিভ করা
$productList = $cachedData;
}
return new ViewModel(['products' => $productList]);
}
}
এখানে memory স্টোরেজ ব্যবহার করা হয়েছে, যেখানে ডাটা RAM তে ক্যাশ হবে এবং দ্রুত এক্সেসযোগ্য হবে।
৩. Redis ক্যাশিং কনফিগারেশন
Redis ক্যাশিং একটি ডিস্ক-বেসড ইন-মেমরি ডেটাবেস যা খুব দ্রুত ক্যাশিং সরবরাহ করে। Redis ব্যবহার করে বড় আকারের অ্যাপ্লিকেশন বা উচ্চ ট্র্যাফিক ওয়েবসাইটের জন্য খুব উপযুক্ত।
Redis ক্যাশিং কনফিগারেশন
Redis ক্যাশিং ব্যবহারের জন্য প্রথমে আপনাকে Redis PHP এক্সটেনশন ইনস্টল করতে হবে:
composer require predis/predis
এরপর, module.config.php ফাইলে Redis ক্যাশের কনফিগারেশন করুন:
<?php
return [
'cache' => [
'adapter' => [
'name' => 'redis',
'options' => [
'server' => [
'host' => 'localhost', // Redis সার্ভারের হোস্ট
'port' => 6379, // Redis সার্ভারের পোর্ট
],
'ttl' => 3600, // ক্যাশের TTL
],
],
'plugins' => [
'serializer' => true,
],
],
];
এখানে server অ্যারে Redis সার্ভারের হোস্ট এবং পোর্ট নির্দেশ করে।
ক্যাশ ব্যবহার
Redis ক্যাশ ব্যবহার করার একটি উদাহরণ:
use Laminas\Cache\StorageFactory;
class ProductController extends AbstractActionController
{
public function indexAction()
{
$cache = StorageFactory::adapterFactory('redis', [
'server' => [
'host' => 'localhost',
'port' => 6379,
],
'ttl' => 3600,
]);
// ক্যাশে ডাটা চেক করা
$cachedData = $cache->getItem('product_list', $success);
if (!$success) {
// ক্যাশে ডাটা না থাকলে, নতুন ডাটা তৈরি করুন
$productList = ['Product 1', 'Product 2', 'Product 3'];
// নতুন ডাটা ক্যাশে সেভ করা
$cache->setItem('product_list', $productList);
} else {
// ক্যাশ থেকে ডাটা রিট্রিভ করা
$productList = $cachedData;
}
return new ViewModel(['products' => $productList]);
}
}
এখানে Redis স্টোরেজ ব্যবহার করা হয়েছে এবং ডাটা Redis সার্ভারে ক্যাশ করা হয়েছে।
সারাংশ
Zend Framework (Laminas) এ ক্যাশিং স্টোরেজ কনফিগার করার মাধ্যমে আপনি অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে পারেন। File ক্যাশিং, Memory ক্যাশিং, এবং Redis ক্যাশিং এর মাধ্যমে আপনি বিভিন্ন ধরনের ক্যাশিং স্টোরেজ ব্যবহার করতে পারবেন।
- File ক্যাশিং সাধারণ অ্যাপ্লিকেশনের জন্য উপযুক্ত যেখানে ডাটা ফাইল সিস্টেমে সংরক্ষণ করা হয়।
- Memory ক্যাশিং খুব দ্রুত অ্যাক্সেসযোগ্য ইন-মেমরি ক্যাশ সরবরাহ করে।
- Redis ক্যাশিং উচ্চ ট্র্যাফিক এবং বড় অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত, যেখানে ডাটা Redis সার্ভারে ক্যাশ হয়।
এই ক্যাশিং পদ্ধতিগুলির সাহায্যে আপনি অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্কেলেবিলিটি উন্নত করতে পারেন।
Read more