ASP.NET Core Almacenamiento en caché de respuestas
ASP.NET Core proporciona un Almacenamiento en caché de respuestas que le permite almacenar en caché la respuesta del servidor de una solicitud de cliente para futuras solicitudes.
Note
Esta función está disponible en NCache Enterprise solamente.
Opciones avanzadas de almacenamiento en caché de respuestas
Note
Esta función solo está disponible en NCache 5.2 adelante.
Dependencia de la base de datos
NCache le permite agregar dependencia de la base de datos a la respuesta almacenada en caché en NCache. La base de datos puede ser:
- Microsoft SQL Server o
- Servidor Oracle
Al agregar dependencia de la base de datos a cualquier página, cualquier cambio en la base de datos elimina la página del caché. Esto mantiene los datos de la caché sincronizados con los datos de la base de datos.
Invalidación de datos
Otra técnica proporcionada por NCache mantener los datos de la caché actualizados y deshacerse de los datos obsoletos es la invalidación de datos. Si una respuesta se almacena en caché y en cualquier momento se cambian los datos en esa página, lo que afecta a los demás datos, la caché se ve obligada a recuperar nuevos datos. Por ejemplo, al eliminar con éxito un artículo de su carrito de compras en un sitio web de comercio electrónico, el carrito de compras debe reflejar los cambios realizados, invalidando así los datos.
Se agrega una etiqueta de invalidación con los datos observables y es responsable de eliminar los datos no válidos o obsoletos del caché. Luego se obtienen nuevos datos de la base de datos comparándolos con los datos invalidados. Con la etiqueta de invalidación de datos configurada en Verdadero para las páginas de éxito en la actualización de datos, cualquier respuesta almacenada en caché se invalida para obtener una nueva respuesta del caché.
Usar NCache para el almacenamiento en caché de respuestas
Para utilizar NCache como caché distribuido para el almacenamiento en caché de respuestas, NCache proporciona sus propios métodos de extensión para configurar servicios y middleware.
- Instale el siguiente paquete NuGet en su aplicación según su NCache Versión:
- Empresa: AspNetCore.ResponseCache.NCache
- Para utilizar NCacheLos métodos de almacenamiento en caché de respuestas incluyen el siguiente espacio de nombres en su aplicación:
- El caché debe estar ejecutándose.
- La aplicación debe ser conectado al caché antes de realizar la operación.
- Para obtener detalles de la API, consulte: AñadaNCacheResponseCachingServicesResponseCachingServices, NCacheConfiguración.
- Asegúrese de que los datos que se agregan sean serializable.
- Para garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
- Para manejar cualquier excepción no vista, consulte el Solucionando Problemas .
Configurar el servicio de almacenamiento en caché de respuestas
ASP.NET Core proporciona su propio middleware para el almacenamiento en caché de respuestas. Esto debe agregarse a la colección de servicios utilizando el AgregarRespuestaAlmacenamiento en caché método.
Abierto Inicio.cs de tu proyecto.
En
ConfigureServices
método, agregue el siguiente servicio:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
// Remaining services here
}
Configurar NCache como caché distribuida
NCache proporciona métodos personalizados para configurarse como un caché distribuido para aplicaciones ASP.NET. Esto requiere sólo un nombre de caché en NCache y cualquier configuración opcional para almacenar el contenido MVC. Especificamos el siguiente método para la configuración.
Especificar la configuración de caché en AppSettings.json
Las configuraciones de caché se pueden agregar como una sección separada en Configuración de aplicaciones.json de su aplicación. El siguiente ejemplo agrega una sección NCacheSettings
que configura el nombre de la caché. Puede cambiar el nombre según su caché registrado. Después de agregar el nombre de la caché, puede proporcionar el nombre de la cadena de conexión predeterminada que contiene el nombre de la cadena de conexión para establecer una conexión con el servidor para agregar la dependencia de la base de datos. En el caso de varias cadenas de conexión para varias bases de datos, la cadena de conexión predeterminada decide qué nombre de base de datos usar. Cada cadena de conexión debe tener un nombre como se muestra a continuación.
Importante:
Asegúrese de que la memoria caché especificada se esté ejecutando.
. . .
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"ExceptionsEnabled": "True"
"DefaultConnectionStringName": "DBServer1"
},
"ConnectionStrings": {
"DBServer1": "Data Source=20.20.20.40 \\SQLEXPRESS;Database=Northwind;User Id=admin;password=xxxxxxxx"
}
. . .
Una vez especificada la configuración de la caché, NCache Se deben agregar servicios para configurar. NCache como un caché distribuido en la aplicación.
Abierto Inicio.cs de tu proyecto.
En
ConfigureServices
método, agregue los siguientes servicios:La
AddOptions.Configure<NCacheConfiguration>
El método de extensión se llama en tiempo de ejecución. Puede usar este método para agregar servicios al contenedor.La
AddNCacheResponseCachingServices
El método de extensión inicializa las configuraciones relacionadas con la dependencia de la base de datos y la invalidación de Configuración de aplicaciones.json.
public void ConfigureServices(IServiceCollection services)
{
// Read NCache specific configurations from app.settings.json
services.AddOptions().Configure<NCacheConfiguration>(Configuration.GetSection("NCacheSettings"));
// Register NCache for response caching with dependency or invalidation
services.AddNCacheResponseCachingServices();
}
Agregar caché distribuida NCache Tag Helper para ver la clase
Como se mencionó anteriormente, para agregar dependencia de la base de datos con los datos en el caché, una etiqueta <distributed-cache-ncache>
se utiliza para especificar los parámetros. Esta etiqueta se deriva de la clase auxiliar de etiquetas distribuidas y hereda los atributos de esta clase. por favor sigue esto documentación para obtener una información detallada de los atributos que se pueden especificar.
NCache proporciona los siguientes atributos en esta clase para agregar dependencia:
<name>
: La clave del elemento que está en la caché como identificador único.<depends-on>
: consulta que selecciona los elementos de la base de datos de los que depende la respuesta. El formato de consulta contiene el nombre del parámetro, que es una variable que redirige a la respuesta almacenada en caché. El nombre del parámetro puede distinguir entre mayúsculas y minúsculas, pero debe ser coherente con el nombre del parámetro en la respuesta almacenada en caché. De manera similar, para consultas parametrizadas, se agrega "@@" antes del nombre del parámetro. Por ejemplo, si la dependencia se agrega en el ID de persona, entonces el nombre del parámetro debe ser coherente tanto en las páginas dependientes como en las de respuesta.<dependency-type>
: Define qué tipo de Dependencia de Base de Datos está asociada, es decir, Oracle o SQL server.
Note
También puede agregar el nombre de la cadena de conexión predeterminada en esta etiqueta. En caso de que no se agregue aquí ninguna cadena de conexión predeterminada, la cadena de conexión predeterminada mencionada en el configuración de aplicaciones.json se utiliza.
<dependency type: "SQLServer" connection-string-name="DBServer">
<invalidates>
: un indicador booleano que se establece en Verdadero si se agrega invalidación con un atributo. Al establecer el indicador Verdadero, ante cualquier cambio que ocurra en el elemento dependiente, todas las páginas relacionadas con esa clave se invalidan.
A continuación se muestra un archivo de muestra que muestra la dependencia de SQL agregada con una respuesta:
<distributed-cache-ncache name="key1" depends-on="Select * from products where @@id" connection-string-name="[connection_string_name] dependency-type="SQLServer|Oracle" invalidates="true">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache-ncache>
Agregar ayudante de etiquetas de caché distribuidas para ver la clase
En el momento que todos los DARWINs coticen incluyendo los deslizamientos NCache Los servicios se han configurado para el almacenamiento en caché de respuestas, ahora puede especificar el contenido específico de las vistas del controlador que desea almacenar en caché. ÁSPID.NET Core proporciona un Ayudante de etiquetas de caché distribuidas para agregar etiquetas con parámetros al Vistas que almacenará en caché el contenido marcado en el caché configurado.
El siguiente ejemplo agrega el <distributed-cache>
etiquetar el contenido en Vistas -> Acerca de.cshtml con parámetros variables. Al actualizar la aplicación, el contenido, "Elemento normal", cambiará según DateTime.Now
, mientras que el contenido etiquetado permanecerá estático mientras se almacena en caché.
La
expires-after
El atributo especifica la caducidad absoluta del contenido. Este elemento se eliminará del caché una vez que hayan transcurrido 10 segundos. Sin embargo, si se actualiza la aplicación, los elementos se vuelven a cargar en la memoria caché.La
name
El atributo es el identificador único de la memoria caché para cada instancia del asistente de etiquetas.La
vary-by
El atributo mantiene el elemento en la caché hasta que la cadena de consulta en la URL sea la misma para el valor especificado en esta etiqueta.
Para obtener más detalles sobre los parámetros, consulte la Documentación de Microsoft para asistentes de etiquetas antes de continuar.
Una vez que se ejecuta la aplicación, puede monitorear las estadísticas de caché a través de NCache Centro de Gestión/NCache Monitor para NCache Enterprise, o contadores PerfMon para NCache Professional.
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p> The value for this item will change everytime the application is refreshed.</p>
<div>@DateTime.Now.ToString()</div><br />
<p>The value for this item will be static and remain in the cache forever, unless cache is cleared.</p>
<distributed-cache name="Key:1" >
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static upon refreshing the application, but it will expire after 10 seconds.</p>
<distributed-cache name="Key:2" expires-after ="TimeSpan.FromSeconds(10)">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static and will only be removed from cache if the "vary-by" value is changed.</p>
<distributed-cache name="Key:3" vary-by ="test">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
Recursos adicionales
NCache proporciona una aplicación de ejemplo para el almacenamiento en caché de respuestas en GitHub.
Vea también
.NETO: Alachisoft.NCache.ResponseCaching; espacio de nombres