Asp.Net核心2.1视图缓存(响应缓存)详解
ASP.NET核心2.0不支持响应缓存Razor页面。该功能将支持ASP.NET核心2.1版本。
在旧版本的mvc中,有一个可以缓存视图的特性(OutputCache),它可以保持同一个参数的请求,并在N段时间内直接从MVC缓存中读取,而不需要取视图逻辑。
[输出缓存(持续时间=20)]//将到期时间设置为20秒。公共操作结果example cacheaction(){ var time=datetime . now . tostring(' yyyy年mm月dd日HH时间MM分ss秒');ViewBag.time=time返回视图();}在Asp.Net core 2.1中,官方文档称:响应缓存可以减少客户端或代理对web服务器的请求数量。响应缓存还可以减少web服务器执行器生成的响应量。响应缓存由指定您希望客户端、代理和缓存响应的中间件如何控制的头组成。
在Asp.Net核心2.1中,响应缓存必须采用以秒为单位的:持续时间参数,并且至少设置一秒钟,而不是输出缓存
[响应缓存(持续时间=5)]public interaction result about(){ view bag。时间=日期时间。现在。tostring('年、月、日、时、分、秒');返回视图();}然后浏览器请求此视图
最大年龄=5出现在浏览器响应头的缓存控制中,由http协议解释如下
客户端将不接受保留时间超过指定秒数的响应。例如:最大年龄=60 (60秒),最大年龄=2592000 (1个月)
如果在浏览器中禁用缓存,响应缓存将不起作用
变化过滤
[response cache(varybyheader=' user-agent ',duration=5)]public interaction result about(){ viewpag . time=datetime . now . tostring(' yyyy年mm月dd日HH时间MM分ss秒');返回视图();}
Http响应头中vary的功能是告诉缓存服务器或CDN :我仍然是来自同一个浏览器的请求。把缓存给我。如果您将浏览器更改为请求,那么vary的值必须为空,那么缓存服务器将认为您是一个新的请求,并将向浏览器读取最新的数据。
参考文献:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
禁用缓存(无存储和位置。无)
在http: no-store中,请求和响应信息不应该存储在对方的磁盘系统中;
[responsecachelocation(location=responsecachelocation。none,no store=true)]public interaction result about(){ view bag。时间=日期时间。现在。tostring('年、月、日、小时、分、秒');返回视图();}ResponseCacheLocation。无是在缓存控制中设置无缓存属性,这样浏览器就不会缓存当前的网址缓存配置文件。在正常项目中,必须有许多控制器,但不可能每个控制器都有相同的缓存策略。此时,我们需要一个缓存配置来灵活应对这个问题。当mvc服务被注入时,我们可以将我们的缓存策略注入到option中。
服务。AddMvc(选项={ option。CacheProfiles.Add('test1 ',新的CacheProfile(){ Duration=5 });选项。缓存配置文件。添加(' test2),新的缓存配置文件(){位置=响应缓存位置。None,NoStore=true });});那么当我们使用它时,只需直接使用配置策略的名称
[响应缓存(cacheprofilename=' test1 ')]public interaction result about(){ view bag . time=datetime . now . tostring(' yyyy年mm月dd日HH小时MM分ss秒');返回视图();}所以我们可以在功能后面配置和以前一样的东西,代码看起来干净多了
总结:关于响应缓存,我个人的理解是:MVC通过返回HTTP响应头,在执行刷新操作时,允许浏览器直接从缓存中读取,无需请求服务器。
版权声明:Asp.Net核心2.1视图缓存(响应缓存)详解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。