CakePHP তে Data এবং Query Caching ব্যবহার করা খুবই গুরুত্বপূর্ণ, কারণ এটি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সহায়ক। Caching (ক্যাশিং) হল একটি প্রক্রিয়া যেখানে অ্যাপ্লিকেশন বার বার একে অপরকে একই তথ্য পুনরায় না নিয়ে, পূর্বের প্রাপ্ত তথ্য সংরক্ষণ করে এবং সেই তথ্য থেকে দ্রুত ফলাফল প্রদান করে। এটি ডাটাবেস কুয়েরি, ফাইল এবং রেসপন্সের জন্য কার্যকরী হতে পারে।
CakePHP তে ক্যাশিং সমর্থন করার জন্য বিভিন্ন অপশন রয়েছে, যা ডেটা এবং কুয়েরি থেকে শুরু করে পুরো রেন্ডারিং পদ্ধতিও ক্যাশে করে রাখতে পারে।
১. CakePHP তে Data Caching
Data Caching ব্যবহারের মাধ্যমে অ্যাপ্লিকেশনটি ডাটাবেস কুয়েরি বা ব্যয়বহুল অপারেশনগুলো থেকে দ্রুত রেসপন্স পেতে পারে। CakePHP তে Data Caching সাধারনত Cache ক্লাস ব্যবহার করে করা হয়।
১.১. Data Caching কিভাবে কাজ করে?
CakePHP তে Data Caching ব্যবহার করার জন্য আপনাকে প্রথমে একটি ক্যাশ পদ্ধতি কনফিগার করতে হবে, যেমন File, Memcached বা Redis। একবার ক্যাশ কনফিগার করা হলে, আপনি যেকোনো ডেটা ক্যাশে সংরক্ষণ করতে পারেন এবং পরবর্তী সময়ে দ্রুত এটি পুনরায় ব্যবহার করতে পারেন।
১.২. Data Caching কনফিগারেশন
প্রথমে, CakePHP এর কনফিগারেশন ফাইলে ক্যাশিং সিস্টেমটি সেটআপ করতে হবে।
// config/app.php
'Cache' => [
'default' => [
'engine' => 'File', // ফাইল ক্যাশিং
'path' => CACHE,
'prefix' => 'myapp_',
'serialize' => true,
'duration' => '+1 hour', // ক্যাশ ডেটা ১ ঘণ্টা পর্যন্ত কার্যকর থাকবে
],
// আরও ক্যাশিং স্টোরেজ কনফিগার করা যায়, যেমন Memcached, Redis ইত্যাদি।
],
এখানে:
engine: ক্যাশিং পদ্ধতি নির্ধারণ করে, যেমনFile,Memcached, বাRedis।path: ফাইল ক্যাশে সংরক্ষিত ডেটা কোথায় থাকবে তা নির্দেশ করে।prefix: ক্যাশ ফাইলের নামের প্রিফিক্স।duration: কত সময় পরে ক্যাশ ডেটা মেয়াদ উত্তীর্ণ হবে।
১.৩. Data Caching ব্যবহার
একবার ক্যাশ কনফিগার করা হলে, আপনি কন্ট্রোলারে বা যেকোনো জায়গায় ক্যাশ ডেটা সংরক্ষণ এবং পুনরুদ্ধার করতে পারেন।
// src/Controller/PostsController.php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Cache\Cache;
class PostsController extends Controller
{
public function index()
{
// ক্যাশ চেক করা
$posts = Cache::read('posts_data');
// যদি ক্যাশে ডেটা না থাকে তবে ডেটাবেস থেকে ডেটা নিয়ে ক্যাশে সংরক্ষণ করা
if (!$posts) {
$posts = $this->Posts->find('all')->toArray();
Cache::write('posts_data', $posts); // ক্যাশে ডেটা লেখা
}
$this->set(compact('posts'));
}
}
এখানে:
Cache::read(): ক্যাশে ডেটা পড়তে ব্যবহার করা হয়।Cache::write(): ক্যাশে ডেটা সংরক্ষণ করতে ব্যবহার করা হয়।
এভাবে, আপনি ক্যাশিংয়ের মাধ্যমে ডেটা বার বার ডাটাবেস থেকে না নিয়ে দ্রুত লোড করতে পারবেন।
২. CakePHP তে Query Caching
Query Caching মূলত ডাটাবেস কুয়েরি অপারেশনগুলোর ফলাফল ক্যাশে সংরক্ষণ করতে ব্যবহৃত হয়। এতে করে, যদি একই কুয়েরি পুনরায় চালানো হয়, তাহলে তা দ্রুততম সময়ে ফলাফল প্রদান করবে কারণ তা ক্যাশে সংরক্ষিত থাকে।
২.১. Query Caching কিভাবে কাজ করে?
CakePHP তে Query Caching খুব সহজে কাজ করে এবং এটি আপনার ORM কুয়েরি অপারেশনগুলোকে ক্যাশে সংরক্ষণ করতে সহায়তা করে। যদি আপনি ক্যাশিং সক্ষম করেন, তাহলে CakePHP স্বয়ংক্রিয়ভাবে একই কুয়েরি বার বার চালানোর পরিবর্তে ক্যাশ থেকে ডেটা পড়বে।
২.২. Query Caching ইমপ্লিমেন্ট করা
CakePHP তে Query Caching সক্ষম করতে আপনাকে ORM তে ক্যাশিং সক্ষম করতে হবে। নিচে এর উদাহরণ দেওয়া হলো:
// src/Controller/PostsController.php
namespace App\Controller;
use Cake\Controller\Controller;
class PostsController extends Controller
{
public function index()
{
// Query ক্যাশিং সক্ষম করা
$query = $this->Posts->find('all')->cache('posts_query', 'default', 3600); // ক্যাশে ১ ঘণ্টা
$posts = $query->toArray();
$this->set(compact('posts'));
}
}
এখানে:
cache(): এটি কুয়েরি ক্যাশিং সক্ষম করে এবং ক্যাশে ফলাফল সংরক্ষণ করে।'posts_query': ক্যাশের কী (key) যা দিয়ে ডেটা ক্যাশে রাখা হবে।'default': কনফিগার করা ক্যাশ ড্রাইভার (যেমনFile,Memcached)।3600: ক্যাশের মেয়াদ (১ ঘণ্টা)।
২.৩. Query Caching এর সুবিধা
- পারফরম্যান্স বৃদ্ধি: একই কুয়েরি বার বার চালানোর পরিবর্তে ক্যাশ থেকে ডেটা পড়ে, যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে।
- লোড টাইম কমানো: ক্যাশিংয়ের মাধ্যমে ডেটাবেস লোড টাইম কমানো যায়।
- সার্ভারের ওপর লোড কমানো: একই কুয়েরি বার বার চালানো না হওয়ায় সার্ভারের ওপর চাপ কমে।
৩. CakePHP তে Full Page Caching
CakePHP তে শুধু Data এবং Query ক্যাশিং নয়, পুরো পেজের ক্যাশিংও করা যায়। এটি বিশেষভাবে সেইসব পেজের জন্য কার্যকরী যা কম পরিবর্তনশীল এবং সব ব্যবহারকারীর জন্য একই ধরনের কনটেন্ট প্রদান করে, যেমন স্ট্যাটিক পেজগুলো।
৩.১. Full Page Caching ইমপ্লিমেন্ট করা
CakePHP তে Full Page Caching সক্ষম করতে CacheAction কম্পোনেন্ট ব্যবহার করা হয়। এটি একটি নির্দিষ্ট অ্যাকশন বা কন্ট্রোলার পেজের জন্য পূর্ণ ক্যাশিং চালু করে।
// src/Controller/PostsController.php
namespace App\Controller;
use Cake\Controller\Controller;
class PostsController extends Controller
{
public $components = ['Cache.CacheAction'];
public function initialize(): void
{
parent::initialize();
$this->CacheAction->config('posts_index', [
'cache' => 'default',
'duration' => '+1 hour',
]);
}
public function index()
{
// এই অ্যাকশনের জন্য ক্যাশিং সক্রিয় হবে
$posts = $this->Posts->find('all')->toArray();
$this->set(compact('posts'));
}
}
এখানে:
CacheAction: এটি পুরো পেজের ক্যাশিং ব্যবস্থাপনা করে এবং সেটিকে এক্সপায়ারি সময় দিয়ে কনফিগার করে।
CakePHP তে Data এবং Query Caching ব্যবহার করা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করার জন্য একটি শক্তিশালী পদ্ধতি। ক্যাশিং এর মাধ্যমে, ডাটাবেস কুয়েরি এবং ব্যয়বহুল অপারেশনগুলো পুনরায় না করে, দ্রুত ফলাফল পাওয়া যায়। CakePHP তে ক্যাশিং সেটআপ করা সহজ এবং এটি বিভিন্ন ক্যাশিং ড্রাইভার যেমন File, Memcached, Redis এর মাধ্যমে ডেটা এবং কুয়েরি দ্রুত লোড করতে সাহায্য করে। Data এবং Query Caching ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনকে আরও দ্রুত এবং স্কেলেবল করতে পারবেন।
Read more