Caching হল একটি গুরুত্বপূর্ণ টেকনিক যা ওয়েব অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করতে সহায়তা করে। ক্যাশিং ব্যবহারের মাধ্যমে ডেটার পুনরায় প্রক্রিয়াকরণের প্রয়োজন কমিয়ে আনা যায়, যা সার্ভারের লোড কমাতে এবং রেসপন্স টাইম দ্রুত করতে সাহায্য করে। In-memory caching এবং distributed caching হলো দুটি প্রধান ক্যাশিং পদ্ধতি যা ASP.Net অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হয়।
In-memory caching এমন একটি ক্যাশিং মেথড, যেখানে ডেটা সরাসরি অ্যাপ্লিকেশনের মেমরিতে সংরক্ষিত হয়। এই ক্যাশিং পদ্ধতিটি দ্রুত অ্যাক্সেস প্রদান করে এবং ডেটা পুনরায় ফেচ করার প্রয়োজনীয়তা কমায়। এটি সাধারণত ছোট বা একক সার্ভারে চালিত অ্যাপ্লিকেশনে ব্যবহৃত হয়।
ASP.Net Core এ IMemoryCache
ইন্টারফেস ব্যবহার করে ইন-মেমরি ক্যাশিং করা যায়। এটি ডেটাকে মেমরিতে সঞ্চয় করে এবং পরবর্তীতে তা দ্রুত রিটার্ন করে।
Steps:
IMemoryCache ইন্টারফেস ব্যবহার:
IMemoryCache
সার্ভিসটি Startup.cs
এ কনফিগার করতে হবে:public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache(); // In-memory caching enable করা
}
In-memory ক্যাশ ব্যবহার:
IMemoryCache
ইন্টারফেস ইনজেক্ট করে ডেটা ক্যাশ করা এবং পুনরায় ক্যাশ থেকে ফেচ করা যায়।public class MyService
{
private readonly IMemoryCache _cache;
public MyService(IMemoryCache cache)
{
_cache = cache;
}
public string GetCachedData()
{
if (!_cache.TryGetValue("MyKey", out string data))
{
// যদি ক্যাশে ডেটা না থাকে, নতুন ডেটা তৈরি করা
data = "This is some cached data";
// ক্যাশে ডেটা সঞ্চয় করা
_cache.Set("MyKey", data, TimeSpan.FromMinutes(5)); // 5 মিনিট ক্যাশে রাখুন
}
return data;
}
}
এখানে, ক্যাশে ডেটা চেক করা হয় এবং যদি ডেটা না থাকে তবে সেটি সঞ্চয় করা হয়। TimeSpan
এর মাধ্যমে ক্যাশের মেয়াদ নির্ধারণ করা যায়।
Distributed caching হল একটি ক্যাশিং মেথড যা একাধিক সার্ভারের মধ্যে ডেটা ভাগ করে রাখে। এটি তখন ব্যবহৃত হয় যখন অ্যাপ্লিকেশনটির স্কেল বৃদ্ধি পায় এবং একাধিক সার্ভার বা ইনস্ট্যান্সে অ্যাপ্লিকেশন চলতে থাকে। এর মাধ্যমে ডেটার একাধিক কপি সার্ভারের মধ্যে সিঙ্ক্রোনাইজ করা হয়, যাতে ক্লায়েন্ট বা সার্ভার কোথাও থেকেই ডেটা এক্সেস করা সম্ভব হয়।
Distributed caching ব্যবহার করার জন্য কিছু সাধারণ টেকনিক রয়েছে:
ASP.Net Core তে Redis বা SQL Server এর মাধ্যমে Distributed Caching কনফিগার করা সম্ভব।
Redis হলো একটি জনপ্রিয় ডিস্ট্রিবিউটেড ক্যাশিং সল্যুশন যা দ্রুত ডেটা রিট্রিভাল এবং শেয়ারড ক্যাশিং সমর্থন করে।
Steps:
Redis ইনস্টল ও কনফিগারেশন:
Microsoft.Extensions.Caching.StackExchangeRedis
প্যাকেজটি NuGet থেকে ইনস্টল করুন:Install-Package Microsoft.Extensions.Caching.StackExchangeRedis
Redis কনফিগার করা:
Startup.cs
ফাইলে Redis ক্যাশিং কনফিগার করুন:public void ConfigureServices(IServiceCollection services)
{
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379"; // Redis সার্ভারের ঠিকানা
options.InstanceName = "MyApp_"; // Redis ইনস্ট্যান্স নাম
});
}
Redis ক্যাশ ব্যবহার:
IDistributedCache
ইন্টারফেস ব্যবহার করে Redis ক্যাশ থেকে ডেটা রিট্রিভ বা সেট করা হয়।public class MyService
{
private readonly IDistributedCache _cache;
public MyService(IDistributedCache cache)
{
_cache = cache;
}
public async Task<string> GetDistributedCachedDataAsync()
{
string data = await _cache.GetStringAsync("MyDistributedKey");
if (data == null)
{
data = "This is some distributed cached data";
await _cache.SetStringAsync("MyDistributedKey", data, new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5) // ক্যাশে ৫ মিনিট রাখুন
});
}
return data;
}
}
এখানে, ডেটা Redis ক্যাশে সঞ্চয় এবং রিট্রিভ করার জন্য IDistributedCache
ব্যবহৃত হয়েছে। এটি Distributed Cache হিসেবে Redis সিস্টেম ব্যবহার করছে।
In-memory caching এবং distributed caching হল পারফরম্যান্স টিউনিংয়ের গুরুত্বপূর্ণ অংশ। In-memory ক্যাশিং ছোট অ্যাপ্লিকেশনের জন্য আদর্শ, যেখানে Redis বা অন্যান্য distributed caching সল্যুশন একাধিক সার্ভার বা স্কেলড অ্যাপ্লিকেশনগুলোর জন্য অত্যন্ত কার্যকর। ক্যাশিংয়ের মাধ্যমে অ্যাপ্লিকেশন দ্রুত ডেটা সরবরাহ করতে পারে এবং সার্ভারের লোড কমিয়ে আসল ডেটা প্রসেসিংয়ের প্রয়োজনীয়তা কমায়।