Przykład Microsoft.Extensions.Caching.Memory (z plikiem PDF) w języku C#
Aby tworzyć aplikacje responsywne i wydajne, często potrzebne są metody optymalizacji aplikacji .NET. Buforowanie to skuteczne podejście polegające na tymczasowym przechowywaniu często wyszukiwanych materiałów w rozproszonej pamięci podręcznej w celu przyspieszenia ich pobierania. Skrócenie czasu przetwarzania i zmniejszenie obciążenia serwera dzięki tej strategii może prowadzić do znacznego wzrostu wydajności aplikacji. Dodatkowo można wdrożyć liczniki wydajności w celu monitorowania i ulepszania systemu buforowania.
[Caching](https://en.wikipedia.org/wiki/Cache_(computing) jest potężną strategią optymalizacyjną w tym kontekście. Microsoft.Extensions.Caching.Memory zapewnia wydajne rozwiazanie do keszowania obiektow w pamieci dla aplikacji .NET. Twoje aplikacje zorientowane na PDF beda dzialac i odpowiadac znacznie szybciej, jesli strategicznie wykorzystasz kesz MemoryCache wraz z IronPDF.
Przedstawiamy, jak efektywnie zintegrowac przyklady Microsoft.Extensions.Caching.Memory w C# z IronPDF. W tym artykułe omówimy zalety buforowania w procesie konwersji HTML do PDF w IronPDF, przedstawimy kilka przydatnych wskazówek dotyczących wdrażania oraz szczegółowy przewodnik po konfiguracji buforowania w programie IronPDF. Kiedy wszystko będzie już gotowe, będziesz dysponować umiejętnościami i zasobami niezbędnymi do tworzenia skutecznych i intuicyjnych aplikacji do obsługi plików PDF.
Microsoft.Extensions.Caching.Memory: Podstawa keszowania w .NET
Buforowanie to metoda stosowana w wielu wysokowydajnych aplikacjach .NET, która polega na przechowywaniu często używanych danych w pamięci w celu ich szybkiego odzyskania. Microsoft.Extensions jest jedna z wielu dostepnych opcji keszowania. Caching.Memory to szczegolnie silna i elastyczna opcja. Ta biblioteka jest czescia wiekszego przestrzeni nazw Microsoft.Extensions.Caching, oferujacego proste, ale skuteczne podejscie do keszowania w pamieci.
Kluczowe typy w "Microsoft.Extensions.Caching.Memory"
IMemoryCache
- Ten interfejs reprezentuje podstawową funkcję wykorzystania pamięci podręcznej w pamięci. Oferuje sposoby zarządzania wpisami w pamięci podręcznej oraz ich dodawania, pobierania i usuwania.
- Potraktuj to jako główny punkt wejścia dla swoich procesów buforowania.
MemoryCache
- Wlasciwa implementacja
IMemoryCacheznajduje sie w tej klasie. Oferuje funkcje administracyjne oraz rzeczywistą pamięć w pamięci operacyjnej dla elementów buforowanych. - Iniekcja zaleznosci jest zazwyczaj uzywana w aplikacjach ASP.NET Core, aby pobrac instancje
MemoryCache.
MemoryCacheEntryOptions
Za pomocą tej klasy można określić ustawienia konfiguracyjne dla konkretnych elementów pamięci podręcznej. Te ustawienia regulują takie kwestie jak:
- Wygasanie: Można skonfigurować ruchome okna wygaśnięcia (gdzie wpis wygasa, jeśli nie zostanie wywołany w określonym przedziale czasu) lub absolutne czasy wygaśnięcia (gdzie wpis wygasa automatycznie).
- Priorytet: Wpływa na to, czy elementy zostaną usunięte, gdy pamięć podręczna się zapełni. Wpisy o wyższym priorytecie mają mniejsze szanse na usunięcie.
- Wywołanie zwrotne po wygaśnięciu: Pozwala to na precyzyjne dostosowanie logiki obsługi danych po ich wygaśnięciu. Jest to szczególnie przydatne w sytuacjach, gdy krytyczne dane wymagają odświeżania, zarządzania zasobami i rejestrowania.
CacheEntry
- W pamięci podręcznej ten typ oznacza pojedynczy wpis. Oferuje metody i atrybuty do pobierania szczegółów dotyczących rozmiaru, ustawień wygaśnięcia oraz wartości z pamięci podręcznej.
- Zasadniczo zawiera wszystkie informacje dotyczące konkretnego fragmentu danych przechowywanego w pamięci podręcznej.
ICacheEntry
- Interfejs ten opisuje podstawowe czynności, które można wykonać na elemencie pamięci podręcznej, choć nie jest to konieczne do podstawowych operacji buforowania. Zawiera instrukcje dotyczące pobierania wartości i szczegółów dotyczących wygaśnięcia. Jest to częściej spotykane w sytuacjach, w których trzeba pobrać klucz ciągu znaków.
- Ten interfejs jest zaimplementowany przez klase
CacheEntry, ktora oferuje praktyczna implementacje tych funkcji.
Zainstaluj i skonfiguruj Microsoft.Extensions.Caching.Memory
Podczas uruchamiania aplikacji pamięć jest wykorzystywana do konfiguracji usługi pamięci podręcznej w ramach kolekcji usług aplikacji .NET Core. Poniżej znajduje się aplikacja ASP.NET Core z skonfigurowanym Microsoft.Extensions.Caching.Memory:
Zainstaluj wymagany pakiet NuGet
Najpierw upewnij się, że Microsoft.Extensions.Caching.Memory jest zainstalowany dla Twojego projektu. Można go zainstalować za pomocą konsoli NuGet Package Manager Console, używając polecenia:
Install-Package Microsoft.Extensions.Caching.Memory
Możemy też użyć menedżera pakietów NuGet, żeby zainstalować pakiet:

Konfiguracja usług w pliku Startup.cs
Przejdz do metody ConfigureServices w swojej aplikacji ASP.NET Core, otwierajac plik Startup.cs. Aby skonfigurowac usluge keszowania w pamieci, dodaj nastepujacy kod:
using Microsoft.Extensions.Caching.Memory;
public void ConfigureServices(IServiceCollection services)
{
// Add memory cache service
services.AddMemoryCache();
// Other service configurations...
}
using Microsoft.Extensions.Caching.Memory;
public void ConfigureServices(IServiceCollection services)
{
// Add memory cache service
services.AddMemoryCache();
// Other service configurations...
}
Imports Microsoft.Extensions.Caching.Memory
Public Sub ConfigureServices(ByVal services As IServiceCollection)
' Add memory cache service
services.AddMemoryCache()
' Other service configurations...
End Sub
Obiekt usługi pamięci podręcznej jest dodawany do kolekcji usług aplikacji i konfigurowany przez ten kod. Usługa systemu keszowania w pamięci jest rejestrowana, używając domyślnych konfiguracji za pomocą funkcji AddMemoryCache.
Iniektuj IMemoryCache
Po skonfigurowaniu magazynu keszu, kazda klasa lub komponent, ktore potrzebuja keszowania, moga miec wstrzykiwany do nich interfejs IMemoryCache. Na przykład w klasie kontrolera lub usługi:
public class MyService
{
private readonly IMemoryCache _cache;
public MyService(IMemoryCache cache)
{
_cache = cache;
}
// Use _cache to perform caching operations...
}
public class MyService
{
private readonly IMemoryCache _cache;
public MyService(IMemoryCache cache)
{
_cache = cache;
}
// Use _cache to perform caching operations...
}
Public Class MyService
Private ReadOnly _cache As IMemoryCache
Public Sub New(ByVal cache As IMemoryCache)
_cache = cache
End Sub
' Use _cache to perform caching operations...
End Class
Metody do keszowania i pobierania danych z pamięci są dostarczane przez interfejs IMemoryCache.
Konfiguracja opcji pamięci podręcznej
Ustawiając parametry pamięci podręcznej, można zmienić sposób jej działania, w tym ograniczenia rozmiaru, taktyki usuwania wpisów z pamięci podręcznej oraz zasady wygasania wartości w pamięci podręcznej. Oto przykład ustawiania opcji pamięci podręcznej:
public void ConfigureServices(IServiceCollection services)
{
// Configure cache options
services.AddMemoryCache(options =>
{
options.SizeLimit = 1024; // Set the maximum size limit for the cache
options.CompactionPercentage = 0.75; // Set the percentage of memory to free up when the cache size exceeds the limit
options.ExpirationScanFrequency = TimeSpan.FromMinutes(5); // Set how often the cache should scan for expired items
});
// Other service configurations...
}
public void ConfigureServices(IServiceCollection services)
{
// Configure cache options
services.AddMemoryCache(options =>
{
options.SizeLimit = 1024; // Set the maximum size limit for the cache
options.CompactionPercentage = 0.75; // Set the percentage of memory to free up when the cache size exceeds the limit
options.ExpirationScanFrequency = TimeSpan.FromMinutes(5); // Set how often the cache should scan for expired items
});
// Other service configurations...
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
' Configure cache options
services.AddMemoryCache(Sub(options)
options.SizeLimit = 1024 ' Set the maximum size limit for the cache
options.CompactionPercentage = 0.75 ' Set the percentage of memory to free up when the cache size exceeds the limit
options.ExpirationScanFrequency = TimeSpan.FromMinutes(5) ' Set how often the cache should scan for expired items
End Sub)
' Other service configurations...
End Sub
Zmodyfikuj ustawienia zgodnie ze specyfikacją swojej aplikacji.
Te instrukcje pomoga Ci skonfigurowac Microsoft.Extensions.Caching.Memory w aplikacji ASP.NET Core, co pozwoli jej dzialac szybciej i sprawniej przez przechowywanie i pobieranie czesto uzywanych danych.
Pierwsze kroki
Czym jest IronPDF?
Dzięki znanej bibliotece .NET IronPDF programiści mogą generować, edytować i wyświetlać dokumenty PDF w aplikacjach .NET. Tworzenie plików PDF z treści HTML, obrazów lub surowych danych to tylko jedna z wielu funkcji, które oferuje do pracy z plikami PDF. Inne funkcje obejmują dodawanie tekstu, obrazów i kształtów do istniejących dokumentów PDF, konwersję stron HTML do formatu PDF oraz wyodrębnianie tekstu i obrazów z plików PDF.
Poniżej przedstawiono niektóre funkcje IronPDF:
- Tworzenie plików PDF z HTML, PNG i nieprzetworzonych danych.
- Pobieranie obrazów i tekstu z plików PDF.
- Dodawanie nagłówków, stopek i znaków wodnych do plików PDF.
- Dokumenty PDF z ochroną hasłem i szyfrowaniem.
- Wypełnianie formularzy i funkcje podpisu cyfrowego.
Zainstaluj pakiet NuGet
W ramach projektu upewnij się, że pakiet IronPDF jest zainstalowany. Do instalacji można użyć konsoli menedżera pakietów NuGet:
Install-Package IronPdf
Aby uzyskac dostep do funkcji ConfigureServices, otworz plik Startup.cs w swojej aplikacji ASP.NET Core. Aby skonfigurować IronPDF, dodaj następujący kod.
using IronPdf;
public void ConfigureServices(IServiceCollection services)
{
// Configure IronPDF
services.AddSingleton<HtmlToPdf>();
// Other service configurations...
}
using IronPdf;
public void ConfigureServices(IServiceCollection services)
{
// Configure IronPDF
services.AddSingleton<HtmlToPdf>();
// Other service configurations...
}
Imports IronPdf
Public Sub ConfigureServices(ByVal services As IServiceCollection)
' Configure IronPDF
services.AddSingleton(Of HtmlToPdf)()
' Other service configurations...
End Sub
Konfigurujac usluge HtmlToPdf IronPDF jako singleton, kod ten zapewnia, ze aplikacja tworzy i uzywa tylko jednej instancji HtmlToPdf.
Uzywanie Microsoft.Extensions.Caching.Memory z IronPDF
W aplikacjach .NET, Microsoft.Extensions.Caching.Memory oferuje praktyczny środek przechowywania często wymaganych danych w celu szybszego ich pobierania.
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using System.Net;
using System.Net.Http.Headers;
using IronPdf;
namespace DemoWebApplication.Controllers
{
[ApiController]
[Route("[controller]")]
public class DemoController : ControllerBase
{
private readonly IMemoryCache _cache;
private readonly HtmlToPdf _htmlToPdf;
private readonly ILogger<DemoController> _logger;
public DemoController(ILogger<DemoController> logger, IMemoryCache cache, HtmlToPdf htmlToPdf)
{
_logger = logger;
_cache = cache;
_htmlToPdf = htmlToPdf;
}
[HttpGet]
public FileContentResult Generate()
{
string fileName = "Sample.pdf";
var stream = GeneratePdf("Hello IronPDF");
return new FileContentResult(stream, "application/octet-stream")
{
FileDownloadName = fileName
};
}
private byte[] GeneratePdf(string htmlContent)
{
// Object key
string cacheKey = "GeneratedPdf";
if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes))
{
// PDF not found in cache, generate it
var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);
pdfBytes = pdfDocument.BinaryData;
// Cache the generated PDF with a sliding expiration of 1 hour
_cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1));
}
return pdfBytes;
}
}
}
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Memory;
using System.Net;
using System.Net.Http.Headers;
using IronPdf;
namespace DemoWebApplication.Controllers
{
[ApiController]
[Route("[controller]")]
public class DemoController : ControllerBase
{
private readonly IMemoryCache _cache;
private readonly HtmlToPdf _htmlToPdf;
private readonly ILogger<DemoController> _logger;
public DemoController(ILogger<DemoController> logger, IMemoryCache cache, HtmlToPdf htmlToPdf)
{
_logger = logger;
_cache = cache;
_htmlToPdf = htmlToPdf;
}
[HttpGet]
public FileContentResult Generate()
{
string fileName = "Sample.pdf";
var stream = GeneratePdf("Hello IronPDF");
return new FileContentResult(stream, "application/octet-stream")
{
FileDownloadName = fileName
};
}
private byte[] GeneratePdf(string htmlContent)
{
// Object key
string cacheKey = "GeneratedPdf";
if (!_cache.TryGetValue(cacheKey, out byte[] pdfBytes))
{
// PDF not found in cache, generate it
var pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent);
pdfBytes = pdfDocument.BinaryData;
// Cache the generated PDF with a sliding expiration of 1 hour
_cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1));
}
return pdfBytes;
}
}
}
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.Extensions.Caching.Memory
Imports System.Net
Imports System.Net.Http.Headers
Imports IronPdf
Namespace DemoWebApplication.Controllers
<ApiController>
<Route("[controller]")>
Public Class DemoController
Inherits ControllerBase
Private ReadOnly _cache As IMemoryCache
Private ReadOnly _htmlToPdf As HtmlToPdf
Private ReadOnly _logger As ILogger(Of DemoController)
Public Sub New(ByVal logger As ILogger(Of DemoController), ByVal cache As IMemoryCache, ByVal htmlToPdf As HtmlToPdf)
_logger = logger
_cache = cache
_htmlToPdf = htmlToPdf
End Sub
<HttpGet>
Public Function Generate() As FileContentResult
Dim fileName As String = "Sample.pdf"
Dim stream = GeneratePdf("Hello IronPDF")
Return New FileContentResult(stream, "application/octet-stream") With {.FileDownloadName = fileName}
End Function
Private Function GeneratePdf(ByVal htmlContent As String) As Byte()
' Object key
Dim cacheKey As String = "GeneratedPdf"
Dim pdfBytes() As Byte
If Not _cache.TryGetValue(cacheKey, pdfBytes) Then
' PDF not found in cache, generate it
Dim pdfDocument = _htmlToPdf.RenderHtmlAsPdf(htmlContent)
pdfBytes = pdfDocument.BinaryData
' Cache the generated PDF with a sliding expiration of 1 hour
_cache.Set(cacheKey, pdfBytes, TimeSpan.FromHours(1))
End If
Return pdfBytes
End Function
End Class
End Namespace
Importujemy przestrzenie nazw wymagane do pracy z Microsoft.Extensions.Caching.Memory Microsoft i ASP.NET. Tworzymy kontroler DemoController, ktory pochodzi od ControllerBase. Ten kontroler odpowiedzie na zapytania przeslane przez HTTP. Instancja IMemoryCache jest wstrzykiwana do konstruktora kontrolera.
Aby kontrolować czas działania usług, w tym pamięci podręcznej, .NET Core oferuje wstrzykiwanie zależności. Z atrybutem [HttpGet] zastosowanym, metoda Generate jest oznaczona do obslugi zadania HTTP GET do sklepu z wyznaczonej trasy (/Demo). Próbujemy pobrać dane PDF z pamięci podręcznej przy użyciu podanego klucza pamięci podręcznej. Jesli dane nie zostana znalezione w keszu, uzywamy funkcji GeneratePdf do utworzenia nowego PDF.
W przypadku wielu serwerów aplikacji należy skonfigurować buforowanie rozproszone, aby zapewnić spójną obsługę pamięci podręcznej na wszystkich serwerach.
Aby skorzystać z Microsoft.Extensions.Caching.Memory, odwiedź dokumentację i przykładowy kod dostarczony do keszowania danych i zwiększenia wydajności w aplikacjach ASP.NET Core. W praktyce można dostosować zasady wygasania, klucze pamięci podręcznej i zachowanie pamięci podręcznej do potrzeb aplikacji. Buforowanie danych, których generowanie jest kosztowne lub do których często dostęp ma wiele wątków, może poprawić ogólne wrażenia użytkownika i znacznie skrócić czas odpowiedzi.

Wnioski
Reasumujac, Microsoft.Extensions.Caching.Memory moze byc uzywane do zwiekszenia skalowalnosci i wydajnosci aplikacji .NET, szczegolnie tych opartych na frameworku ASP.NET Core. Programiści mogą poprawić komfort użytkowania, zminimalizować opóźnienia i zoptymalizować dostęp do danych, wykorzystując buforowanie w pamięci. Biblioteka zapewnia elastyczny i przyjazny dla użytkownika interfejs API do opracowywania strategii buforowania dostosowanych do konkretnych wymagań aplikacji, niezależnie od tego, czy chodzi o buforowanie danych referencyjnych, wyników zapytań czy obliczonych wartości. Mozesz osiagnac zauwazalne zwiekszenie szybkosci i lepsza responsywnosc aplikacji, przyjmujac najlepsze praktyki keszowania i dodajac Microsoft.Extensions.Caching.Memory do swoich aplikacji .NET.
Poprzez wykorzystanie funkcji Microsoft.Extensions, przy pomocy IronPDF do dynamicznego tworzenia PDF i Caching.Memory do skutecznego keszowania danych, programisci .NET moga znacznie zwiekszyc szybkosc swoich aplikacji. Ta potężna kombinacja umożliwia programistom łatwe projektowanie aplikacji o wysokiej wydajności, które są skalowalne i responsywne poprzez redukcję obciążenia serwera, usprawnienie doświadczeń użytkowników i eliminację nadmiaru przetwarzania.
IronPDF można nabyć w rozsądnej cenie, a zakup pakietu obejmuje dożywotnią licencję. Pakiet oferuje doskonałą wartość, ponieważ zaczyna się od $999, jednorazowej opłaty za wiele systemów. Użytkownikom posiadającym licencje oferuje całodobową pomoc techniczną online. Więcej informacji na temat opłat można znaleźć na stronie licencyjnej IronPDF. Odwiedź tę stronę poświęconą firmie Iron Software, aby dowiedzieć się więcej o produktach tej firmy.
Często Zadawane Pytania
Jaki jest cel biblioteki Microsoft.Extensions.Caching.Memory w aplikacjach .NET?
Microsoft.Extensions.Caching.Memory służy do zwiększania wydajności aplikacji .NET poprzez zapewnienie buforowania obiektów w pamięci. Przechowuje często używane dane w pamięci w celu szybkiego ich odzyskiwania, co może być szczególnie korzystne w połączeniu z IronPDF for .NET do operacji na plikach PDF.
W jaki sposób buforowanie może poprawić wydajność przetwarzania plików PDF w środowisku .NET?
Buforowanie może skrócić czas przetwarzania i zmniejszyć obciążenie serwera poprzez przechowywanie często żądanych danych PDF w pamięci. Po zintegrowaniu z biblioteką taką jak IronPDF pozwala to na szybsze tworzenie i edycję plików PDF, poprawiając ogólną szybkość działania aplikacji i jej responsywność.
Jak wdrożyć buforowanie w pamięci w aplikacji ASP.NET Core?
W ASP.NET Core można zaimplementować buforowanie w pamięci, dodając services.AddMemoryCache() w metodzie ConfigureServices w pliku Startup.cs. Integruje się to płynnie z IronPDF for .NET, zapewniając wydajne przetwarzanie plików PDF i pobieranie danych.
Jaka jest rola IMemoryCache w buforowaniu?
IMemoryCache to interfejs używany w aplikacjach .NET do efektywnego zarządzania wpisami w pamięci podręcznej. W połączeniu z IronPDF pozwala programistom na szybkie przechowywanie i pobieranie danych PDF, zwiększając wydajność aplikacji.
Jakie są typowe opcje konfiguracyjne buforowania w .NET?
Typowe opcje konfiguracyjne obejmują ustawianie zasad wygasania, limitów rozmiaru i strategii usuwania przy użyciu MemoryCacheEntryOptions. Konfiguracje te optymalizują proces buforowania, zwłaszcza podczas korzystania z IronPDF do obsługi plików PDF.
W jaki sposób programiści mogą tworzyć dynamiczne pliki PDF w aplikacji .NET?
Programiści mogą używać IronPDF do tworzenia dynamicznych plików PDF w aplikacjach .NET. Obsługuje on konwersję HTML do PDF, dodawanie nagłówków i stopek oraz wiele innych funkcji, co czyni go wszechstronnym narzędziem do generowania i edycji plików PDF.
Jakie są zalety integracji buforowania z generowaniem plików PDF w środowisku .NET?
Zintegrowanie buforowania z generowaniem plików PDF przy użyciu IronPDF w aplikacjach .NET może znacznie zwiększyć szybkość i zmniejszyć opóźnienia. Skutkuje to lepszym doświadczeniem użytkownika i bardziej skalowalnymi aplikacjami dzięki szybszemu dostępowi do często używanych danych.
Jak można monitorować i ulepszać system buforowania w aplikacjach .NET?
Liczniki wydajności można wdrożyć w celu monitorowania efektywności systemu buforowania w aplikacjach .NET. Takie monitorowanie pozwala na wprowadzanie zmian i ulepszeń w celu zapewnienia optymalnej wydajności, zwłaszcza podczas pracy z IronPDF for .NET przy zadaniach związanych z plikami PDF.




