asp.net-core
कैशिंग
खोज…
परिचय
कैशिंग डेटा की आसानी से सुलभ प्रतिलिपि को बनाए रखने से किसी एप्लिकेशन के प्रदर्शन को बेहतर बनाने में मदद करता है। Aspnet Core दो आसान उपयोग के साथ आता है और अनुकूल कैशिंग सार का परीक्षण करता है।
मेमोरी कैश स्थानीय सर्वर की मेमोरी कैशिंग में डेटा स्टोर करेगा।
वितरित कैश एक केंद्रीकृत स्थान पर डेटा कैश रखेगा जो कि क्लस्टर में सर्वरों द्वारा पहुंच योग्य है। यह बॉक्स के बाहर तीन कार्यान्वयन के साथ आता है: मेमोरी में (यूनिट परीक्षण और स्थानीय देव के लिए), रेडिस और एसक्यूएल सर्वर।
ASP.NET कोर अनुप्रयोग में InMemory कैश का उपयोग करना
अपने ASP.NET एप्लिकेशन में मेमोरी कैश का उपयोग करने के लिए, अपने project.json
में निम्न निर्भरताएँ जोड़ें। project.json
फ़ाइल:
"Microsoft.Extensions.Caching.Memory": "1.0.0-rc2-final",
Startup class में ConfigureServices विधि से कैशे सेवा (Microsoft.Extensions.Caching.Memory से) जोड़ें
services.AddMemoryCache();
हमारे आवेदन में कैश में आइटम जोड़ने के लिए, हम IMemoryCache
का उपयोग करेंगे, जिसे नीचे दिखाए गए अनुसार किसी भी वर्ग (उदाहरण के लिए नियंत्रक) में इंजेक्ट किया जा सकता है।
private IMemoryCache _memoryCache;
public HomeController(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
मान प्रदान करेंगे यदि वह मौजूद हो जाओ, लेकिन अन्यथा रिटर्न null
।
// try to get the cached item; null if not found
// greeting = _memoryCache.Get(cacheKey) as string;
// alternately, TryGet returns true if the cache entry was found
if(!_memoryCache.TryGetValue(cacheKey, out greeting))
कैश पर लिखने के लिए सेट विधि का उपयोग करें । सेट मान का उपयोग करने के लिए कुंजी को स्वीकार करता है, कैश किया जाने वाला मान और MemoryCacheEntryOptions
का एक सेट। MemoryCacheEntryOptions
आपको पूर्ण या स्लाइडिंग समय-आधारित कैश समाप्ति, कैशिंग प्राथमिकता, कॉलबैक और निर्भरता निर्दिष्ट करने की अनुमति देता है। नीचे दिए गए नमूने में से एक-
_memoryCache.Set(cacheKey, greeting,
new MemoryCacheEntryOptions()
.SetAbsoluteExpiration(TimeSpan.FromMinutes(1)));
वितरित कैशिंग
वितरित कैश का लाभ उठाने के लिए, आपको उपलब्ध कार्यान्वयन में से एक का संदर्भ लेना होगा:
उदाहरण के लिए आप रेडिस के कार्यान्वयन को निम्नानुसार पंजीकृत करेंगे:
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedRedisCache(options =>
{
options.Configuration = "ServerAdress";
options.InstanceName = "InstanceName";
});
}
जहां आपको इसकी आवश्यकता है, IDistributedCache
निर्भरता की आवश्यकता है:
public class BooksController { private IDistributedCache distributedCache; public BooksController(IDistributedCache distributedCache) { this.distributedCache = distributedCache; } [HttpGet] public async Task<Books[]> GetAllBooks() { var serialized = this.distributedCache.GetStringAsync($"allbooks"); Books[] books = null; if (string.IsNullOrEmpty(serialized)) { books = await Books.FetchAllAsync(); this.distributedCache.SetStringAsync($"allbooks", JsonConvert.SerializeObject(books)); } else { books = JsonConvert.DeserializeObject<Books[]>(serialized); } return books; } }