Flask-Caching একটি এক্সটেনশন যা Flask অ্যাপ্লিকেশনগুলিতে ক্যাশিং সক্ষম করতে ব্যবহৃত হয়। ক্যাশিং অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সহায়ক, কারণ এটি ডেটা পুনরায় প্রক্রিয়া করার পরিবর্তে দ্রুত অ্যাক্সেসযোগ্য স্থানে সংরক্ষণ করে রাখে। Flask-Caching বিভিন্ন ক্যাশিং স্টোর সরবরাহ করে, যেমন Memcached, Redis, SimpleCache, ইত্যাদি।
এই টিউটোরিয়ালে, আমরা Flask-Caching কনফিগারেশন এবং ব্যবহারের পদ্ধতি দেখব।
১. Flask-Caching ইনস্টল করা
প্রথমে, Flask-Caching ইনস্টল করতে হবে। আপনি pip ব্যবহার করে এটি ইনস্টল করতে পারেন:
pip install Flask-Caching
এটি Flask অ্যাপ্লিকেশনের জন্য ক্যাশিং এক্সটেনশন ইনস্টল করবে।
২. Flask-Caching কনফিগার করা
Flask-Caching ব্যবহার করার জন্য আপনাকে প্রথমে ক্যাশিং কনফিগারেশন করতে হবে। Flask-Caching বিভিন্ন ধরনের ক্যাশিং স্টোর সমর্থন করে, যেমন SimpleCache, Redis, Memcached।
২.১ SimpleCache (ডিফল্ট ক্যাশ স্টোর)
SimpleCache একটি ইন-মেমরি ক্যাশ স্টোর যা ডিফল্টভাবে Flask-Caching ব্যবহার করে।
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
# Flask-Caching কনফিগারেশন
app.config['CACHE_TYPE'] = 'SimpleCache' # SimpleCache ব্যবহার করা হচ্ছে
app.config['CACHE_DEFAULT_TIMEOUT'] = 300 # ক্যাশের ডিফল্ট সময় (300 সেকেন্ড)
cache = Cache(app) # ক্যাশ অবজেক্ট তৈরি করা
@app.route('/')
def index():
# ক্যাশে ডেটা পরীক্ষা করা
cached_data = cache.get('some_data')
if cached_data is None:
# যদি ক্যাশে ডেটা না থাকে, তবে নতুন ডেটা তৈরি করা
cached_data = 'এই ডেটা ক্যাশ থেকে এসেছে না'
cache.set('some_data', cached_data) # ক্যাশে ডেটা সংরক্ষণ করা
return cached_data
if __name__ == "__main__":
app.run(debug=True)
এখানে:
CACHE_TYPE = 'SimpleCache': SimpleCache ব্যবহার করা হচ্ছে।CACHE_DEFAULT_TIMEOUT: ক্যাশে থাকা ডেটা কতক্ষণ থাকবে তা নির্ধারণ করে (300 সেকেন্ড = 5 মিনিট)।cache.get(): ক্যাশ থেকে ডেটা নেয়।cache.set(): ক্যাশে নতুন ডেটা সংরক্ষণ করে।
২.২ Redis ক্যাশিং
Redis একটি ইন-মেমরি ডেটাবেস যা উচ্চ পারফরম্যান্স ক্যাশিংয়ের জন্য ব্যবহৃত হয়। Redis ক্যাশিং ব্যবহার করতে, প্রথমে Redis সার্ভার ইনস্টল করা এবং চলমান থাকতে হবে।
Redis ইনস্টল করা:
pip install redis- Flask-এ Redis ক্যাশিং কনফিগার করা:
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
# Redis ক্যাশিং কনফিগারেশন
app.config['CACHE_TYPE'] = 'RedisCache' # Redis ব্যবহার করা হচ্ছে
app.config['CACHE_REDIS_URL'] = "redis://localhost:6379/0" # Redis URL
app.config['CACHE_DEFAULT_TIMEOUT'] = 300 # ক্যাশের ডিফল্ট সময়
cache = Cache(app) # ক্যাশ অবজেক্ট তৈরি করা
@app.route('/')
def index():
# ক্যাশে ডেটা পরীক্ষা করা
cached_data = cache.get('some_data')
if cached_data is None:
# যদি ক্যাশে ডেটা না থাকে, তবে নতুন ডেটা তৈরি করা
cached_data = 'এই ডেটা Redis ক্যাশ থেকে এসেছে না'
cache.set('some_data', cached_data) # ক্যাশে ডেটা সংরক্ষণ করা
return cached_data
if __name__ == "__main__":
app.run(debug=True)
এখানে:
CACHE_TYPE = 'RedisCache': Redis ক্যাশ ব্যবহার করা হচ্ছে।CACHE_REDIS_URL: Redis সার্ভারের URL যেখানে ক্যাশ সংরক্ষিত হবে (এখানে লোকাল Redis সার্ভারlocalhost:6379ব্যবহার করা হয়েছে)।CACHE_DEFAULT_TIMEOUT: ক্যাশে থাকা ডেটার টাইমআউট (300 সেকেন্ড)।
৩. Flask-Caching ব্যবহার করার অন্যান্য উদাহরণ
৩.১ ফাংশন ক্যাশিং
Flask-Caching ফাংশন ক্যাশিংও সমর্থন করে, যার মাধ্যমে আপনি নির্দিষ্ট ফাংশনগুলোর রিটার্ন ভ্যালু ক্যাশ করতে পারেন।
@app.route('/expensive')
@cache.cached(timeout=50) # ক্যাশে 50 সেকেন্ড ধরে রাখুন
def expensive_function():
# এই ফাংশনটি ব্যয়বহুল হতে পারে
return "এই ফলাফল ক্যাশে রাখা হয়েছে"
এখানে:
@cache.cached(timeout=50): এই ডেকোরেটরটি ফাংশনের রিটার্ন ভ্যালুকে ক্যাশে রাখে এবং 50 সেকেন্ড পর্যন্ত তা ক্যাশে থাকে।
৩.২ কাস্টম ক্যাশ কীগুলি
আপনি কাস্টম ক্যাশ কীগুলি ব্যবহার করতে পারেন এবং বিভিন্ন ক্যাশ কীগুলির মাধ্যমে আলাদা আলাদা ডেটা ক্যাশ করতে পারেন।
@app.route('/user/<username>')
def show_user_profile(username):
cached_user_data = cache.get(f'user_data_{username}')
if cached_user_data is None:
# ডেটা ক্যাশে না থাকলে এটি তৈরি করা হবে
cached_user_data = f"ডেটা {username} এর জন্য"
cache.set(f'user_data_{username}', cached_user_data, timeout=60) # 60 সেকেন্ড
return cached_user_data
এখানে:
cache.get(f'user_data_{username}'): ব্যবহারকারীর নামের উপর ভিত্তি করে কাস্টম ক্যাশ কীগুলি তৈরি হচ্ছে এবং ক্যাশে তা সেভ হচ্ছে।
৪. Flask-Caching এর সুবিধা
- পারফরম্যান্স বৃদ্ধি: ক্যাশিংয়ের মাধ্যমে ডেটা দ্রুত সরবরাহ করা যায়, যা অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি করে।
- কম লোড: ক্যাশে থাকা ডেটা ব্যবহার করার মাধ্যমে ব্যাকএন্ড সার্ভিসে কম লোড পড়ে।
- ভিন্ন ক্যাশ স্টোর সাপোর্ট: Flask-Caching বিভিন্ন ক্যাশ স্টোর (Redis, Memcached, SimpleCache, ইত্যাদি) সমর্থন করে, যেগুলো উচ্চ পারফরম্যান্স ক্যাশিং প্রদান করে।
- সহজ কনফিগারেশন: Flask-Caching খুব সহজেই Flask অ্যাপ্লিকেশনে ইন্টিগ্রেট করা যায়।
Flask-Caching হল একটি শক্তিশালী এক্সটেনশন যা অ্যাপ্লিকেশনে ক্যাশিং সুবিধা যুক্ত করতে সাহায্য করে। এটি ডেটার দ্রুত অ্যাক্সেসের জন্য ব্যবহার করা হয়, যা অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে। Flask-Caching বিভিন্ন ক্যাশ স্টোর ব্যবহার করতে সক্ষম, যেমন SimpleCache, Redis, Memcached, যা আপনাকে বিভিন্ন ক্যাশিং পরিবেশে কাজ করার সুযোগ দেয়।
Read more