返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NETMVC缓存过滤器用法
  • 932
分享到

ASP.NETMVC缓存过滤器用法

2024-04-02 19:04:59 932人浏览 泡泡鱼
摘要

缓存过滤器用来输出页面缓存,其用法如下图所示: 注意: Duration:表示缓存多少秒;VaryByParam:表示缓存是否随地址参数而改变。OutputCache除了可以定义在

缓存过滤器用来输出页面缓存,其用法如下图所示:

注意:

Duration:表示缓存多少秒;VaryByParam:表示缓存是否随地址参数而改变。OutputCache除了可以定义在Action方法上面以外,还可以定义在控制器上面。

演示示例:

新建一个mvc应用程序,添加一个名为Cache的控制器,Cache控制器的Index方法里面将当前时间输出到页面中,Cache控制器定义如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.WEB;
using System.Web.Mvc;

namespace _2_缓存过滤器.Controllers
{
    public class CacheController : Controller
    {
        [OutputCache(Duration =5,VaryByParam ="none")]
        // GET: Cache
        public ActionResult Index(int? id)
        {
            ViewData["CurrentTime"] = "现在的时间是:" + DateTime.Now;
            return View();
        }
    }
}

2、Cache控制器的Index视图定义如下:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
        <h2>@ViewData["CurrentTime"]</h2>
    </div>
</body>
</html>

 3、程序运行结果

刷新页面的时候,只有时间过了5秒以后,页面上面显示的时间才会刷新。

如果把VaryByParam的值改为id,那么在5秒的时间范围内,页面显示的时间会随着id值的改变而改变,即只要id的值改变一次,页面显示的时间就会改变。

在MVC程序中使用缓存过滤器的时候,由于控制器的代码需要编译后才能发布,在发布之后,如果要修改缓存的策略,就很麻烦,这时可以采用如下图所示的方法,把缓存策略写在配置文件里面,这样即使在程序发布之后,我们也可以随时调整缓存的策略。

配置文件修改如下:

<?xml version="1.0" encoding="utf-8"?>
<!--
  有关如何配置 asp.net 应用程序的详细信息,请访问
  https://Go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusivejavascriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <HttpRuntime targetFramework="4.6.1" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.ai.Web" />
    </httpModules>
    <!--缓存策略-->
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <add name="cpfile" duration="5" varyByParam="none"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.JSON" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
    </modules>
  </system.webServer>
  <system.codedom>
    <compilers>
      <compiler language="C#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.dotnetCompilerPlatfORM.CSharpcodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
</configuration>

程序代码修改如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace _2_缓存过滤器.Controllers
{
    public class CacheController : Controller
    {

        [OutputCache(CacheProfile = "cpfile")]
        // GET: Cache
        public ActionResult Index(int? id)
        {
            ViewData["CurrentTime"] = "现在的时间是:" + DateTime.Now;
            return View();
        }
    }
}

运行结果和上面的结果一样。 

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

--结束END--

本文标题: ASP.NETMVC缓存过滤器用法

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

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

猜你喜欢
  • ASP.NETMVC缓存过滤器用法
    缓存过滤器用来输出页面缓存,其用法如下图所示: 注意: Duration:表示缓存多少秒;VaryByParam:表示缓存是否随地址参数而改变。OutputCache除了可以定义在...
    99+
    2024-04-02
  • ASP.NETMVC异常过滤器用法
    我们平常在程序里面为了捕获异常,会加上try-catch-finally代码,但是这样会使得程序代码看起来很庞大,在MVC中我们可以使用异常过滤器来捕获程序中的异常,如下图所示: ...
    99+
    2024-04-02
  • ASP.NETMVC自定义异常过滤器
    一、异常过滤器 异常筛选器用于实现IExceptionFilter接口,并在ASP.NET MVC管道执行期间引发了未处理的异常时执行。异常筛选器可用于执行诸如日志记录或显示错误页之...
    99+
    2024-04-02
  • ASP.NETMVC自定义授权过滤器
    目录一、授权过滤器二、示例1、添加对应实体类2、添加测试数据3、新建继承类4、添加Account控制器5、修改配置文件6、添加授权控制器三、测试测试Welcome四、总结一、授权过滤...
    99+
    2024-04-02
  • ASP.NETMVC过滤器执行顺序介绍
    如果某个Action过滤器运用了多种过滤器,那么过滤器的执行顺序是如何呢? 规则一:不同类型的过滤器有一个先后顺序 即执行顺序是:授权过滤器->动作过滤器->结果过滤器...
    99+
    2024-04-02
  • 布隆过滤器实战【防止缓存击穿】
    为什么引入我们的业务中经常会遇到穿库的问题,通常可以通过缓存解决。 如果数据维度比较多,结果数据集合比较大时,缓存的效果就不明显了。 因此为了解决穿库的问题,我们引入Bloom Filter。适合的场景数据...
    99+
    2024-04-02
  • SpringBoot+Redis布隆过滤器防恶意流量击穿缓存的方法
    本篇内容介绍了“SpringBoot+Redis布隆过滤器防恶意流量击穿缓存的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!具体如下:什...
    99+
    2023-06-29
  • SpringBoot+Redis布隆过滤器防恶意流量击穿缓存
    目录什么是恶意流量穿透怎么防布隆过滤器的另一个用武场景给Redis安装Bloom Filter在Redis里使用Bloom Filter结合SpringBoot使用搭建spring ...
    99+
    2024-04-02
  • vue中过滤器的用法
    一、过滤器 过滤器是vue中的一个特性,作用是用于对文本进行格式化的作用。 注意:在vue 1.0中有内置的过滤器,在2.0中去掉了内置过滤器,只有自定义过滤器 二、使用位置 过滤器...
    99+
    2024-04-02
  • Android --- logcat 打印日志、设置缓存大小、过滤等
    一、示例: setprop persist.log.tag -G setprop persist.log.tag Vsetprop persist.log.tag Ssetprop persist.log.tag.APP_A Vsetpr...
    99+
    2023-09-02
    logcat 打印日志 设置缓存大小 过滤关键字 Powered by 金山文档
  • ASP.NET MVC授权过滤器用法
    过滤器 过滤器(Filter)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,并不是每个请求都会响应内容,只有那些有特定权限的用户才能响应特定的内容...
    99+
    2024-04-02
  • VUE过滤器的使用方法
    这篇文章主要讲解了“VUE过滤器的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VUE过滤器的使用方法”吧!1. 定义一个日期格式化函数都9012了...
    99+
    2024-04-02
  • Redis使用元素删除的布隆过滤器来解决缓存穿透问题
    目录前言缓存雪崩解决方案缓存击穿解决方案 缓存穿透解决方案布隆过滤器(Bloom Filter)什么是布隆过滤器位图(Bitmap)哈希碰撞布隆过滤器的2大特点fpp布隆过...
    99+
    2024-04-02
  • Vue过滤器使用方法详解
    目录前言过滤器私有过滤器插值表达式中使用v-bind属性绑定全局过滤器前言 本篇来学习vue(仅适用vue2)中过滤器的基本用法 过滤器 过滤器(Filters)是vue为开发者提供...
    99+
    2022-12-15
    Vue过滤器的作用 Vue过滤器如何使用 Vue过滤器
  • jQuery如何使用过滤器过滤多属性
    这篇文章给大家分享的是有关jQuery如何使用过滤器过滤多属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用过滤器过滤多属性//This precision-based approache...
    99+
    2023-06-27
  • springboot使用过滤器
    一:过滤器 1.过滤器介绍 过滤器是处于客户端与服务器资源文件之间的一道过滤网,帮助我们过滤一些不符合要求的请求。通常用作 Session校验,判断用户权限。 2.过滤器生命周期 使用过滤器很简单,只需要实现Filter类,然后重写它的3个...
    99+
    2023-09-03
    servlet java 开发语言 spring boot
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理
    目录布隆过滤器的原理在 Python 中使用布隆过滤器1、标准布隆过滤器。2、计数布隆过滤器。3、标准扩容布隆过滤器。4、计数扩容布隆过滤器。Redis 中使用布隆过滤器最后的话在开...
    99+
    2024-04-02
  • Java中使用Filter过滤器的方法
    Filter过滤器 着重记录下 public void doFilter(){} 方法参数: (1) ServletRequest servletRequest  请求re...
    99+
    2024-04-02
  • VUE中的filters过滤器使用方法
    目录前言一、全局过滤器1、全局过滤器之单一挂载2、全局过滤器之批量挂载二、组件过滤器前言 Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双...
    99+
    2024-04-02
  • JavaWeb中过滤器Filter的用法详解
    目录过滤器Filter处理顺序使用场景自定义过滤器源码分析FilterDefFilterMap初始化过滤器创建过滤器链 ApplicationFilterChain执行过滤器链过滤器...
    99+
    2022-11-13
    JavaWeb 过滤器 JavaWeb Filter JavaWeb 过滤器Filter
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作