返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET Core MVC缓存Tag Helpers到内存
  • 527
分享到

ASP.NET Core MVC缓存Tag Helpers到内存

2024-04-02 19:04:59 527人浏览 安东尼
摘要

简介 缓存可以大大提高应用程序加载时间和响应速度。我们可以使用缓存Tag Helpers缓存不会频繁更改的html内容。 在上一篇文章中,我们谈到了Tag Helpers,演示Tag

简介

缓存可以大大提高应用程序加载时间和响应速度。我们可以使用缓存Tag Helpers缓存不会频繁更改的html内容。

在上一篇文章中,我们谈到了Tag Helpers,演示Tag Helpers能做什么、如何使用它们以及一些最常用的Tag Helpers。

今天,我们将看看如何使用缓存Tag Helpers和它们的益处。

Cache Tag Helper

首先说一下 <cache> Tag Helper。与其它Tag Helper不同,其它Tag Helper被当作属性使用,缓存Tag Helper作为标签使用 - <cache>。它根据其属性指定的选项,将包含的内容缓存到内存中。

让我们看一个示例代码:

当我们第一次打开页面,会看到当前的时间;但是,如果我们在30秒内刷新页面,我们每次都会得到相同的内容。然而,一旦每30秒过去之后,就会有新的内容,我们将在输出中再次看到当前时间。

我们通过三个与时间相关属性选项来控制缓存Tag Helper:

  • expires-after - 最常用的一个,它表示缓存内容过期的时间段(timespan)
  • expires-on - 过期的时间点
  • expires-sliding – 每次内容被请求后缓存被延长的时间(timespan)

vary-by 属性

Cache Tag Helpers通过上下文是生成唯一的ID来创建缓存键,这意味着我们可以在同一个视图内部有多个Cache Tag Helpers,这些内容将是唯一的,不会重叠。我们还可以通过使用vary-by属性或任何vary-by属性的组合来指定Cache Tag Helpers使用更复杂的键。

vary by 属性后缀列表:

  • query
  • route
  • cookie
  • header
  • user

vary-by-query

它基于当前请求的查询参数创建唯一的缓存键。

看下面的代码:

我们在页面上看到下面的输出和变化:

vary-by-route

基于某一个路由参数来创建唯一的缓存,逗号分隔路由参数名称列表。

vary-by-cookie

根据存储在cookie中的某一个值来创建唯一的缓存,逗号分隔cookie名称列表。

vary-by-header

基于请求头的某一个参数来创建唯一的缓存,只需要单个请求头名称。

vary-by-user

根据当前登录用户创建唯一的缓存,属性的值为布尔值类型。

我们还可以做哪一些?

正如我们看到的,<cache>Tag Helper非常酷,它将缓存数据存储在本地进程的内存中,如果服务器进程重新启动,所有缓存内容都将丢失。

此外,如果我们有多台服务器,每台服务器都有自己的缓存,这估计不是您期望的。

您可以使用所谓的粘滞会话(sticky sessions),粘滞会话(sticky sessions)确保同一客户端的所有请求都转到同一台服务器。

处理多台服务器缓存不一致的另一种方法是使用分布式缓存。这就是为什么asp.net团队也做了<distributed-cache> Tag Helper。让我们看看这是什么东东。

分布式 Cache Tag Helper

为什么我们应该使用分布式缓存?

  • 支持更高的缩放比例(与内存缓存相比)
  • 使用分布式缓存将缓存内存迁移到外部进程
  • 我们在所有的WEB服务器上得到一致的数据(用户总是得到相同的结果,无论他们访问到哪台Web服务器)
  • 缓存的数据在服务器重新启动和部署时不会丢失
  • 我们可以停止或添加Web服务器,不会丢失缓存的数据

现在我们谈谈我们前面提到的分布式缓存Tag Helper。

分布式缓存Tag Helper的行为与缓存Tag helper几乎相同。对<cache> Tag Helper提供每一个属性也可用于<distributed-cache> Tag Helper。

但是,Distributed Cache TagHelper的区别在于它使我们能够注入和使用外部缓存管理器,而不是使用默认的内存缓存管理器。

如果您需要将缓存的HTML内容存储在用SQL ServerRedis等分布式缓存中,那么您需要<distributed-cache> Tag Helper。

ASP.net core mvc提供两个缓存管理器的实现,分别是SQL ServerRedis

另一个分布式缓存需要注意的是,它需要一个name属性。

那么我们如何使用Tag Helper实现分布式缓存?很简单,但是如果我们只是将<distributed-cache> Tag Helper直接放在Razor代码中是不起作用的。

在ASP.net core MVC 1.1中的使用示例

让我们将Redis添加为我们的分布式缓存管理器:

  • 安装并启动Redis
  • 添加NuGet软件包: Microsoft.Extensions.Caching.Redis
  • 在ConfigureServices方法中添加以下代码:
services.ADDDistributedRedisCache(option =&gt;
{
    option.Configuration = "localhost";
    option.InstanceName = "localRedis";
});

就这么简单!现在,<distributed-cache> Tag Helpers将缓存的内容存储到Redis中。

在ASP.Net Core 2中更容易,因为Microsoft.Extensions.Caching.Redis已经在Microsoft.Aspnetcore.All包中了。

总结

  • Caching Tag Helpers对于缓存HTML内容非常有用
  • <cache> Tag Helper将缓存内容存储在内存中,一旦我们的务器的进程重启,就会丢失所有缓存的内容
  • <distributed-cache>与 <cache> TagHelper 几乎相同,只需要增加name属性,就可以将内存缓存迁移到分布式缓存管理器
  • 控制缓存过期时间三个最重要的属性:
    • expires-after – 最常用的一个,它表示缓存内容过期的时间段(timespan)
    • expires-on – 过期的时间点
    • expires-sliding – 每次内容被请求后缓存被延长的时间(timespan)

到此这篇关于ASP.net Core MVC缓存Tag Helpers到内存的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NET Core MVC缓存Tag Helpers到内存

本文链接: https://lsjlt.com/news/139943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ASP.NET Core MVC缓存Tag Helpers到内存
    简介 缓存可以大大提高应用程序加载时间和响应速度。我们可以使用缓存Tag Helpers缓存不会频繁更改的HTML内容。 在上一篇文章中,我们谈到了Tag Helpers,演示Tag...
    99+
    2024-04-02
  • ASP.NET Core MVC中Tag Helpers用法介绍
    简介 Tag Helpers 提供了在视图中更改和增强现有HTML元素的功能。将它们添加到视图中,会经过Razor模板引擎处理并创建一个HTML,之后再返回给浏览器。有一些Tag H...
    99+
    2024-04-02
  • ASP.NET Core MVC如何自定义Tag Helpers
    这篇文章主要为大家展示了“ASP.NET Core MVC如何自定义Tag Helpers”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET C...
    99+
    2023-06-29
  • ASP.NET Core MVC中Form Tag Helpers怎么用
    这篇文章主要介绍了ASP.NET Core MVC中Form Tag Helpers怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下...
    99+
    2023-06-29
  • ASP.NET Core MVC中Form Tag Helpers用法介绍
    简介 我们已经介绍过Tag Helpers以及一些最常用的Tag Helpers,也谈到了缓存Tag Helpers。在这篇文章中,我们将讨论表单Tag Helpers。 HTML或...
    99+
    2024-04-02
  • ASP.NET Core MVC自定义Tag Helpers用法介绍
    介绍 在之前的内容中,我们谈到了Tag Helpers,我们还谈到了 caching Tag Helpers和form Tag Helpers。 通过创建自定义Tag He...
    99+
    2024-04-02
  • ASP.NET Core中的Http缓存使用
    Http响应缓存可减少客户端或代理对web服务器发出的请求数。响应缓存还减少了web服务器生成响应所需的工作量。响应缓存由Http请求中的header控制。 而ASP.NET ...
    99+
    2022-06-07
    ASP.NET net HTTP core ASP
  • ASP.NET Core中使用Redis实现缓存
    目录一、前言二、安装StackExchange.Redis三、添加配置四、Redis帮助类五、添加服务依赖项六、在控制器中使用七、测试一、前言 我们这里以StackExchange....
    99+
    2024-04-02
  • ASP.Net Core中的内存和GC机制
    托管代码 在 .NET 中, CLR(Common Language Runtime) 负责提取托管代码并编译成机器语言,然后执行它。在此过程中,CLR 提供自动内存管理、...
    99+
    2024-04-02
  • Redis数据库基础与ASP.NET Core缓存实现
    目录基础Redis 库连接 Redis能用 redis 干啥Redis 数据库存储字符串订阅发布RedisValueASP.NET Core 缓存与分布式缓存内存中的缓存ASP.NE...
    99+
    2024-04-02
  • MySQL怎么把整个表缓存到内存
    在MySQL中,可以使用查询缓存来缓存查询结果,但是无法直接将整个表缓存到内存中。不过,可以通过一些优化措施来尽量减少对硬盘的IO操...
    99+
    2024-04-09
    MySQL
  • ASP.NET清空缓存时遇到的问题怎么解决
    这篇文章主要介绍“ASP.NET清空缓存时遇到的问题怎么解决”,在日常操作中,相信很多人在ASP.NET清空缓存时遇到的问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET清空缓存时遇到的...
    99+
    2023-06-17
  • Asp.net Core 3.1基于AspectCore实现AOP实现事务、缓存拦截器功能
    最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理。给一个方法加一个缓存特性,那这个方法就会进行缓存。 这个也是网上说...
    99+
    2022-06-07
    ASP.NET 拦截器 net aop core 缓存 事务 ASP
  • 将 html 页面内容(缓冲区)保存到 .log 文件
    最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《将 html 页面内容(缓冲区)保存到 .log 文件》主要内容涉及到等等知识点,希望能帮到你!当然如...
    99+
    2024-04-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作