Web2Py তে Cache হল একটি গুরুত্বপূর্ণ ফিচার, যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সাহায্য করে। এটি ডেটা বা ভিউকে এক্সটার্নাল রিকোয়েস্টের জন্য অস্থায়ীভাবে সংরক্ষণ (store) করে, ফলে প্রতি রিকোয়েস্টে ডেটা আবার প্রক্রিয়া করার প্রয়োজন হয় না। এতে অ্যাপ্লিকেশন দ্রুত এবং আরও কার্যকরী হয়ে ওঠে।
Web2Py তে Cache Types এবং Cache ব্যবহার সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Web2Py তে Cache Types
Web2Py তে সাধারণত তিন ধরনের Cache ব্যবহার করা যায়:
- Global Cache
- Local Cache
- Session Cache
১. Global Cache
Global Cache হল একটি অ্যাপ্লিকেশনের জন্য সার্বজনীন ক্যাশে, যা পুরো অ্যাপ্লিকেশন জুড়ে ডেটা সংরক্ষণ করে এবং এটি সমস্ত ইউজার দ্বারা শেয়ার করা হয়। যখন কোনো ডেটা একবার ক্যাশে সংরক্ষিত হয়, তখন পরবর্তী রিকোয়েস্টগুলিতে একই ডেটা দ্রুত লোড হয়।
Global Cache ব্যবহার:
# Global Cache - ডেটা ক্যাশে স্টোর করা cache.ram('books_list', db().select(db.book.ALL), time_expire=60) # 60 সেকেন্ড পর্যন্ত ক্যাশে থাকবে
এখানে, cache.ram() ব্যবহার করে ডেটা books_list নামে ক্যাশে সংরক্ষণ করা হচ্ছে। এই ক্যাশে ডেটা 60 সেকেন্ড ধরে থাকবে।
২. Local Cache
Local Cache হল এমন একটি ক্যাশে যা শুধু একটি নির্দিষ্ট ফাংশন বা ভিউতে ডেটা সংরক্ষণ করে। এটি শুধুমাত্র সেই ফাংশন বা ভিউতে কার্যকর, এবং অন্য কোনো রিকোয়েস্টে এটি ব্যবহার করা যায় না।
Local Cache ব্যবহার:
# Local Cache - ক্যাশে স্টোর cache.ram('local_books_list', db().select(db.book.ALL), time_expire=60)
এখানে, cache.ram() ব্যবহৃত হয়েছে, যা শুধু ফাংশন বা ভিউয়ের মধ্যে ক্যাশে ডেটা সংরক্ষণ করবে।
৩. Session Cache
Session Cache হল একটি ইউজারের সেশন সম্পর্কিত ক্যাশে। এটি ইউজারের সাথে সম্পর্কিত ডেটা সংরক্ষণ করে, যাতে ইউজারের সেশন চলাকালীন সময়ে ডেটা দ্রুত লোড করা যায়। এই ক্যাশে সাধারণত ইউজারের প্রোফাইল ডেটা বা অন্যান্য সেশন-ভিত্তিক ডেটা সংরক্ষণ করা হয়।
Session Cache ব্যবহার:
# Session Cache - সেশন ডেটা ক্যাশে session.cached_data = 'Some data' # সেশন ভিত্তিক ডেটা সংরক্ষণ
এখানে, session.cached_data ব্যবহার করা হয়েছে যাতে ইউজারের সেশন সম্পর্কিত ডেটা সংরক্ষণ করা যায়।
Web2Py তে Cache ব্যবহার
১. Cache Store করা
আপনি cache.store() মেথড ব্যবহার করে ডেটা ক্যাশে স্টোর করতে পারেন। এটি ব্যবহারকারীর রিকোয়েস্টের পরে একই ডেটা আবার প্রসেস না করতে সাহায্য করে।
- উদাহরণ: কিছু ডেটা ক্যাশে স্টোর করা।
def index():
data = cache.ram('some_data', db().select(db.some_table.ALL), time_expire=60)
if data is None:
# ক্যাশে ডেটা না থাকলে, নতুন ডেটা সংগ্রহ করুন
data = db().select(db.some_table.ALL)
cache.ram('some_data', data, time_expire=60) # নতুন ডেটা ক্যাশে সংরক্ষণ
return dict(data=data)
এখানে, ডেটা যদি ক্যাশে না থাকে তবে নতুন ডেটা প্রাপ্ত হবে এবং সেটি ক্যাশে সংরক্ষণ করা হবে।
২. Cache Clear করা
কিছু ক্ষেত্রে, আপনাকে ক্যাশে সংরক্ষিত ডেটা ক্লিয়ার (মুছে) করার প্রয়োজন হতে পারে। Web2Py তে cache.clear() মেথড ব্যবহার করে ক্যাশে মুছে ফেলা যায়।
- উদাহরণ: ক্যাশে ডেটা ক্লিয়ার করা।
# ক্যাশে পরিষ্কার করা
cache.ram.clear('some_data') # বিশেষ একটি ক্যাশে মুছে ফেলা
এখানে, some_data ক্যাশে থাকা ডেটা ক্লিয়ার করা হয়েছে।
৩. Cache Expiration
ক্যাশে ডেটা কতক্ষণ ধরে থাকবে তা time_expire প্যারামিটার দিয়ে নির্ধারণ করা যায়। এটি ডেটা কত সময় ধরে ক্যাশে থাকবে তা কন্ট্রোল করতে সাহায্য করে।
# Cache Expiration - 60 সেকেন্ডের জন্য ক্যাশে ডেটা রাখা
cache.ram('some_data', db().select(db.some_table.ALL), time_expire=60)
এখানে, time_expire=60 দিয়ে 60 সেকেন্ড পর্যন্ত ডেটা ক্যাশে থাকবে। সময় পরের মধ্যে ডেটা রিফ্রেশ বা পরিবর্তন হবে।
৪. Cache Checking
ক্যাশে ডেটা রয়েছে কি না, তা পরীক্ষা করতে cache.ram() বা অন্য কোনো ক্যাশে মেথড ব্যবহার করা যায়। এইভাবে আপনি ক্যাশে থাকা ডেটার স্টেটাস পরীক্ষা করতে পারেন।
# ক্যাশে ডেটা পরীক্ষা করা
if cache.ram('some_data') is None:
# ডেটা ক্যাশে না থাকলে, নতুন ডেটা সংগ্রহ করুন
data = db().select(db.some_table.ALL)
cache.ram('some_data', data, time_expire=60)
এখানে, cache.ram('some_data') is None দ্বারা ক্যাশে ডেটা আছে কি না, তা পরীক্ষা করা হচ্ছে।
Cache Configuration in Web2Py
Web2Py তে ক্যাশের কনফিগারেশন সাধারণত models/db.py ফাইলে করা হয়। বিভিন্ন ক্যাশিং স্ট্রাটেজি যেমন ram, memcache, file ইত্যাদি ব্যবহার করে কনফিগারেশন করা যায়।
উদাহরণ: File Cache Configuration
# models/db.py
cache.define('default', Cache('file://cache'))
এখানে, file://cache ব্যবহার করা হয়েছে যাতে ক্যাশ ফাইল সিস্টেমে সংরক্ষিত হয়।
উদাহরণ: Memcache Configuration
# models/db.py
cache.define('default', Cache('memcached://127.0.0.1:11211'))
এখানে, memcached ব্যবহার করা হয়েছে যাতে ক্যাশ Memcached সার্ভারে সংরক্ষিত হয়।
সারাংশ
Web2Py তে Cache Types এবং Cache ব্যবহার করার মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে পারেন। বিভিন্ন ক্যাশিং স্ট্রাটেজি যেমন Global Cache, Local Cache, এবং Session Cache ব্যবহার করে ডেটা সংরক্ষণ এবং দ্রুত অ্যাক্সেস করা যায়। Web2Py তে Cache Store, Cache Clear, Cache Expiration, এবং Cache Checking এর মাধ্যমে ক্যাশে ডেটা পরিচালনা করা সহজ হয়। ক্যাশ কনফিগারেশন করা হয় অ্যাপ্লিকেশনের পারফরম্যান্সের ওপর ভিত্তি করে, যাতে এটি সবচেয়ে ভালোভাবে কাজ করতে পারে।
Read more