Przejdź do treści stopki
POMOC .NET

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.

Buforowanie (Caching jest w tym kontekście skuteczną strategią optymalizacji. Microsoft.Extensions.Caching.Memory zapewnia wydajne rozwiązanie do buforowania obiektów w pamięci dla aplikacji .NET. Twoje aplikacje oparte na formacie PDF będą działać i reagować znacznie szybciej, jeśli strategicznie wykorzystasz pamięć podręczną MemoryCache wraz z IronPDF.

Zastanawiamy się, jak efektywnie zintegrować przykłady w języku C# z IronPDF. W tym artykule 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: Podstawy buforowania 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 jedną z wielu dostępnych opcji buforowania. Caching.Memory jest szczególnie mocną i elastyczną opcją. Ta biblioteka jest częścią większej przestrzeni nazw Microsoft.Extensions.Caching, oferującej proste, ale skuteczne podejście do buforowania w pamięci.

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

  • Rzeczywista implementacja IMemoryCache znajduje się w tej klasie. Oferuje funkcje administracyjne oraz rzeczywistą pamięć w pamięci operacyjnej dla elementów buforowanych.
  • Wstrzykiwanie zależności jest zazwyczaj używane w aplikacjach .NET Core do pobierania instancji 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.
  • Interfejs ten jest zaimplementowany przez klasę CacheEntry, która oferuje praktyczną implementację tych funkcji.

Instalacja i konfiguracja 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 w projekcie zainstalowano Microsoft.Extensions.Caching.Memory. 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:

Przykład Microsoft.Extensions.Caching.Memory (z plikiem PDF) w języku C#: Rysunek 1 — Wyszukaj Microsoft.Extensions.Caching.Memory w menedżerze pakietów NuGet i zainstaluj go

Konfiguracja usług w pliku Startup.cs

Przejdź do metody ConfigureServices w aplikacji .NET Core, otwierając plik Startup.cs. Aby skonfigurować usługę pamięci podręcznej, dodaj następujący 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
$vbLabelText   $csharpLabel

Obiekt usługi pamięci podręcznej jest dodawany do kolekcji usług aplikacji i konfigurowany przez ten kod. Usługa systemu pamięci podręcznej jest rejestrowana przy użyciu domyślnych konfiguracji za pośrednictwem funkcji AddMemoryCache.

Wstaw IMemoryCache

Po skonfigurowaniu magazynu pamięci podręcznej do każdej klasy lub komponentu wymagającego buforowania można wstrzyknąć 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
$vbLabelText   $csharpLabel

Metody buforowania i pobierania danych z pamięci są udostępniane 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
$vbLabelText   $csharpLabel

Zmodyfikuj ustawienia zgodnie ze specyfikacją swojej aplikacji.

Te instrukcje pomogą Ci skonfigurować Microsoft.Extensions.Caching.Memory w aplikacji .NET Core, umożliwiając jej szybsze i wydajniejsze działanie poprzez przechowywanie i pobieranie często używanych 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 uzyskać dostęp do funkcji ConfigureServices, otwórz plik Startup.cs w aplikacji .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
$vbLabelText   $csharpLabel

Konfigurując usługę IronPDF HtmlToPdf jako singleton, ten kod gwarantuje, że aplikacja tworzy i używa tylko jednej instancji HtmlToPdf.

Korzystanie z Microsoft.Extensions.Caching.Memory w IronPDF

W aplikacjach .NET Microsoft.Extensions.Caching.Memory oferuje praktyczny sposób przechowywania często wyszukiwanych danych w celu ich szybszego odzyskiwania.

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
$vbLabelText   $csharpLabel

Importujemy przestrzenie nazw wymagane do pracy z Microsoft i ASP.NET Microsoft.Extensions.Caching.Memory. Tworzymy kontroler DemoController, który jest pochodną ControllerBase. Ten kontroler będzie odpowiadał na zapytania wysyłane 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. Po zastosowaniu atrybutu [HttpGet] metoda Generate jest oznaczona do obsługi żądań HTTP GET kierowanych do magazynu z wyznaczonej trasy (/Demo). Próbujemy pobrać dane PDF z pamięci podręcznej przy użyciu podanego klucza pamięci podręcznej. Jeśli dane nie zostaną znalezione w pamięci podręcznej, używamy funkcji GeneratePdf do utworzenia nowego pliku 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, zapoznaj się z dokumentacją i przykładowym kodem, które służą do buforowania danych i zwiększania 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.

Przykład Microsoft.Extensions.Caching.Memory (z plikiem PDF) w języku C#: Rysunek 2 — Przykładowy wynik działania powyższego kodu

Wnioski

Podsumowując, Microsoft.Extensions.Caching.Memory może być wykorzystywane do zwiększenia skalowalności i wydajności aplikacji .NET, zwłaszcza 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. Możesz osiągnąć zauważalny wzrost szybkości i lepszą responsywność aplikacji, stosując najlepsze praktyki w zakresie buforowania i dodając Microsoft.Extensions.Caching.Memory do swoich aplikacji .NET.

Wykorzystując funkcje Microsoft.Extensions, z pomocą IronPDF for .NET do dynamicznego tworzenia plików PDF oraz Caching.Memory do efektywnego buforowania danych, programiści .NET mogą znacznie zwiększyć szybkość działania swoich aplikacji. To potężne połączenie umożliwia programistom łatwe projektowanie wydajnych, skalowalnych i responsywnych aplikacji poprzez zmniejszenie obciążenia serwera, poprawę komfortu użytkowania oraz wyeliminowanie obciążenia związanego z przetwarzaniem danych.

IronPDF można nabyć w rozsądnej cenie, a zakup pakietu obejmuje dożywotnią licencję. Pakiet oferuje wyjątkową wartość, ponieważ jego cena zaczyna się od $799, co stanowi jednorazową opłatę 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.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie