Caching হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা ওয়েব অ্যাপ্লিকেশনগুলির পারফরম্যান্স উন্নত করতে সাহায্য করে। CherryPy তে Request এবং Response Caching ব্যবহৃত হয় যাতে ওয়েব অ্যাপ্লিকেশনটি দ্রুত প্রতিক্রিয়া দিতে পারে এবং সার্ভার লোড কম থাকে। এটি সাধারণত ডেটাবেস কল বা ফাইল সার্ভিংয়ের ক্ষেত্রে কার্যকরী হয়, যেখানে একই রিকোয়েস্টের জন্য একই রেসপন্স বারবার তৈরি না করে কেবল ক্যাশে করা রেসপন্স ফেরত দেওয়া হয়।
CherryPy তে Request Caching এবং Response Caching দুইটি আলাদা ব্যবস্থা হিসেবে কাজ করতে পারে। চলুন বিস্তারিতভাবে দেখি কিভাবে CherryPy তে ক্যাশিং সিস্টেম ব্যবহার করা যায়।
Request Caching
Request Caching হল এমন একটি কৌশল যার মাধ্যমে একই ধরনের রিকোয়েস্টের জন্য সার্ভার একই রেসপন্স একাধিকবার না তৈরি করে, বরং ক্যাশে থেকে রেসপন্স ফেরত দেয়।
CherryPy তে Request Caching
CherryPy তে Request Caching করতে হলে আপনাকে tools ব্যবহার করে কাস্টম ক্যাশিং সিস্টেম তৈরি করতে হবে। এটি রিকোয়েস্টের পরে রেসপন্স ক্যাশে করবে এবং একই রিকোয়েস্ট আসলে তা সরাসরি ক্যাশে থেকে ফিরিয়ে দেবে।
উদাহরণ: Request Caching
import cherrypy
class MyApp:
@cherrypy.expose
@cherrypy.tools.cache.on() # Request caching চালু করা
def index(self):
return "এটি ক্যাশড রেসপন্স"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে, cherrypy.tools.cache.on() ব্যবহার করে রিকোয়েস্ট ক্যাশিং চালু করা হয়েছে। CherryPy ডিফল্টভাবে রেসপন্স ক্যাশ করতে পারে এবং সঠিকভাবে সেটআপ করলে ক্যাশ করা রেসপন্স পুনরায় ব্যবহার করতে পারবে।
Response Caching
Response Caching হল রেসপন্সের ক্যাশিং, যেখানে সার্ভার একই রেসপন্সের জন্য বারবার কাজ না করে, বরং একবার তৈরি করা রেসপন্স ক্যাশে সংরক্ষণ করে এবং পরবর্তীতে দ্রুত ফেরত দেয়।
CherryPy তে Response Caching
CherryPy তে Response Caching সক্ষম করার জন্য tools.cache টুল ব্যবহার করা হয়। আপনি ক্যাশে সময়সীমা নির্ধারণ করতে পারেন, যেমন Time-to-Live (TTL) যা ক্যাশে করা রেসপন্সের মেয়াদ নির্ধারণ করে।
উদাহরণ: Response Caching
import cherrypy
import time
class MyApp:
@cherrypy.expose
@cherrypy.tools.cache.on() # Response caching চালু করা
@cherrypy.tools.cache.timeout(3600) # ক্যাশের মেয়াদ 1 ঘণ্টা
def index(self):
return "এটি ক্যাশড রেসপন্স (১ ঘণ্টার জন্য)"
@cherrypy.expose
def get_time(self):
return f"বর্তমান সময়: {time.ctime()}"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে:
cherrypy.tools.cache.on(): রেসপন্স ক্যাশিং চালু করা হয়েছে।cherrypy.tools.cache.timeout(3600): ক্যাশে রাখা রেসপন্সের মেয়াদ ১ ঘণ্টা (৩৬০০ সেকেন্ড) নির্ধারণ করা হয়েছে।
এই কনফিগারেশন অনুযায়ী, index রুটে যে রেসপন্স তৈরি হবে তা ১ ঘণ্টা ধরে ক্যাশে থাকবে এবং পরবর্তী রিকোয়েস্টে দ্রুত ফিরিয়ে দেওয়া হবে।
CherryPy তে Cache Control Headers
CherryPy তে আপনি কাস্টম Cache Control হেডার ব্যবহার করে রেসপন্স কন্ট্রোল করতে পারেন, যেমন আপনি রেসপন্সে কনফিগার করতে পারেন কোন ফাইলগুলো ক্যাশে থাকবে এবং কীভাবে ক্যাশে সংরক্ষিত হবে।
উদাহরণ: Cache Control Header
import cherrypy
class MyApp:
@cherrypy.expose
@cherrypy.tools.cache.on()
@cherrypy.tools.cache.timeout(3600) # ক্যাশের মেয়াদ 1 ঘণ্টা
def index(self):
cherrypy.response.headers['Cache-Control'] = 'public, max-age=3600' # ক্যাশ কন্ট্রোল হেডার সেট করা
return "এই রেসপন্সে ক্যাশ কন্ট্রোল হেডার আছে"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে Cache-Control হেডারটি রেসপন্সে যুক্ত করা হয়েছে, যা নির্দেশ করে যে রেসপন্সটি ১ ঘণ্টা (৩৬০০ সেকেন্ড) পর্যন্ত ক্যাশ করা যাবে।
Response Caching এর সুবিধা এবং ব্যবহার
Response Caching ব্যবহার করার কিছু সুবিধা:
- পারফরম্যান্স বৃদ্ধি: রিকোয়েস্টে একই রেসপন্স বারবার না তৈরি করে ক্যাশ থেকে ফিরিয়ে দেওয়া যায়, ফলে সার্ভারের লোড কমে যায় এবং রেসপন্স টাইম কমে আসে।
- ডেটাবেস কল কমানো: একই ধরনের ডেটার জন্য ডেটাবেস কল কমানো যায়, যা সার্ভারের পারফরম্যান্স বাড়ায়।
- ব্যান্ডউইথ সাশ্রয়: ক্যাশিংয়ের মাধ্যমে পুনরায় ডেটা ট্রান্সফার না হওয়ায় ব্যান্ডউইথ সাশ্রয় হয়।
CherryPy তে Cache Caching বন্ধ করা
কিছু বিশেষ ক্ষেত্রে ক্যাশিং নিষ্ক্রিয় করার প্রয়োজন হতে পারে। আপনি সহজেই CherryPy তে ক্যাশিং বন্ধ করতে পারেন।
উদাহরণ: Cache Caching বন্ধ করা
import cherrypy
class MyApp:
@cherrypy.expose
@cherrypy.tools.cache.off() # ক্যাশিং বন্ধ করা
def index(self):
return "এটি ক্যাশিং ছাড়া রেসপন্স"
if __name__ == '__main__':
cherrypy.quickstart(MyApp())
এখানে, cherrypy.tools.cache.off() ব্যবহার করে ক্যাশিং নিষ্ক্রিয় করা হয়েছে।
CherryPy তে Request এবং Response Caching ব্যবহারের মাধ্যমে আপনার ওয়েব অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্কেলেবিলিটি অনেক উন্নত করা যায়। এটি সার্ভারের লোড কমাতে, রেসপন্স টাইম দ্রুত করতে এবং ব্যান্ডউইথ সাশ্রয় করতে সহায়তা করে। CherryPy এর ক্যাশিং ফিচার কাস্টমাইজ করা যায় এবং বিভিন্ন সময়সীমা বা কনফিগারেশন ব্যবহার করে ক্যাশিংকে নিয়ন্ত্রণ করা যায়।
Read more