Caching
ক্যাশ কি?
- ক্যাশ হচ্ছে একটা সফটওয়্যার বা হার্ডওয়ার সেখানে অরিজিনাল ডাটার কপি রাখা হয় দ্রুত রিকোয়েস্ট সার্ভ করার জন্য
- যদি অরিজিনাল ডাটা আপডেট হয়ে যায় তখন ক্যাশ ডাটাকে স্টেল বা বাসি ডাটা বলা হয়
- যদি ক্যাশে ডাটা পাওয়া যায় তাহলে তাকে হিট বলে
- যদি ক্যাশে ডাটা পাওয়া না যায় তাহলে তাকে মিছ বলে
ক্যাশ করা হয়
- নেটওয়ার্ক কল কমাতে
- কমপ্লেক্স কম্পিউটেশনাল অপারেশন কমাতে
- ডাটাবেস এর কমপ্লেক্স কুয়ারি টাইম কমাতে
ক্যাশ করা যেতে পারে
- ক্লায়েন্ট সাইড - ইমেজ, css , js, html, যেকোন json ইত্যাদি - লোকাল স্টোরেজ এবং CDN ব্যবহার করা যায়
- ক্লায়েন্ট এবং এপ সার্ভার এর মাঝে - প্রক্সি সারর্ভারে বা লোড ব্যাল্যান্সারে ক্যাশ করা যায়। nginx , Varnish ব্যবহার করা যায়
- ডাটাবেস এর কুয়ারি টাইম কমানো - redis বা সিমিলার টুলস ব্যবহার করা যায়
- কমপ্লেক্স অপারেসপন কমানোর - redis বা সিমিলার টুলস ব্যবহার করা যায়
- এমনকি ডাটাবেসেও ক্যাশ করা যেতে পারে - কমপ্লেক্স কুয়ারি করে তা আবার ডাটাবেসে অন্য ফরমেটে সেভ করে রাখা
ক্যাশ এর ডাঁটা অরিজিনাল ডাঁটার সাথে সিঙ্ক করা
- রাইট থ্রো ক্যাশ - ডাটা সিনক করার জন্য একটা কলে অরিজিনাল ডাটা এবং ক্যাশ ডাটা দুটাই আপডেট করা হয়
- রাইট ব্যাক ক্যাশ - শুধু ক্যাশকে আপডেট করা হয় এবং অরিজিনাল ডাটা পরে যেকোন এসিনক ইভেন্ট এর মাধ্যমে আপডেট করা হয়
ক্যাশ ইভিকশন
- ওল্ড ডাটা ক্যাশ থেকে মুছে ফেলাকে ক্যাশ ইভিকশন বলে
- ক্যাশ মুছে ফেলার কিছু কমন এলগোরিদম
- LRU (least-recently used) - বর্তমানে কম ব্যবহার হচ্ছে এমন ডাটা ক্যাশ থেকে ডিলিট করে ফেলা
- FIFO (first in first out) - পুরান ডাটা ক্যাশ থেকে ডিলিট করে ফেলা
- LFU (least-frequently used) - কম ব্যবহার হয়েছে এমন ডাটা ক্যাশ থেকে ডিলিট করে ফেলা
Content Delivery Network - CDN
- থার্ড পার্টি ক্যাশ সার্ভিস
- মাল্টিপল লোকেশন এ ডাটা ক্যাশ করা থাকে
- ক্লায়েন্টের এর সবচেয়ে কাছের ক্যাশ সার্ভার থেকে দ্রত ডাটা সরবরাহ করে থাকে
Latency
- একটা রিকোয়েস্ট সম্পন্ন করতে যে পরিমান সময় লাগে তাকে ল্যাটেন্সি বলে। একে সময় এর একক সেকেন্ড বা মিলি সেকেন্ড দিয়ে পরিমাপ করা যায়
Throughput
- একটা সার্ভার নির্দিষ্ট সময়ে কি পরিমান রিকোয়েস্ট সার্ভ করতে পারে তাকে থ্রোপোট বলে। একটা সার্ভার প্রতি সেকেন্ড ৩২টা রিকোয়েস্ট সার্ভ করতে পারলে তার থ্রোপোট ৩২/সেকন্ড