最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Asp.Net Core 2.1+的視圖緩存(響應(yīng)緩存)

 更新時(shí)間:2018年03月03日 09:54:33   作者:返回主頁 一個(gè)野生程序員  
本篇文章給大家通過實(shí)例講述了Asp.Net Core 2.1+的視圖緩存(響應(yīng)緩存)的相關(guān)知識點(diǎn),對此有興趣的讀者們可以學(xué)習(xí)下。

響應(yīng)緩存Razor 頁與 ASP.NET 核心 2.0 中不支持。 此功能將支持ASP.NET 核心 2.1 版本。

在老的版本的MVC里面,有一種可以緩存視圖的特性(OutputCache),可以保持同一個(gè)參數(shù)的請求,在N段時(shí)間內(nèi),直接從mvc的緩存中讀取,不去走視圖的邏輯。

  [OutputCache(Duration =20)]//設(shè)置過期時(shí)間為20秒 
  public ActionResult ExampleCacheAction() 
  { 
    var time=DateTime.Now.ToString("yyyy年MM月dd日 HH時(shí)mm分ss秒"); 
    ViewBag.time= time; 
    return View(); 
  } 

在Asp.Net core 2.1中,官方文檔上稱:響應(yīng)緩存可減少客戶端或代理對 web 服務(wù)器的請求數(shù)。 響應(yīng)緩存還可減少量工作的 web 服務(wù)器執(zhí)行程序生成響應(yīng)。 響應(yīng)緩存由標(biāo)頭,指定你希望客戶端、 代理和緩存響應(yīng)的中間件如何控制。

在Asp.Net Core 2.1 中,沒有了OutputCache,換成了ResponseCache,ResponseCache必須帶一個(gè)參數(shù):Duration 單位為秒,最少設(shè)置一秒鐘

 [ResponseCache(Duration = 5)]
    public IActionResult About()
    {

      ViewBag.time = DateTime.Now.ToString("yyyy年MM月dd日 HH時(shí)mm分ss秒");

      return View();
    }

然后再瀏覽器請求這個(gè)視圖

在瀏覽器的響應(yīng)頭的Cache-Control 中出現(xiàn)max-age=5, Http協(xié)議對此的解釋是

客戶端將不會(huì)接受其保留時(shí)間大于指定的秒數(shù)的響應(yīng)。 示例: max-age=60 (60 秒), max-age=2592000 (1 個(gè)月)

如果在瀏覽器中禁用緩存,那么ResponseCache不會(huì)有任何效果

Vary過濾

[ResponseCache(VaryByHeader = "User-Agent", Duration = 5)]
    public IActionResult About()
    {

      ViewBag.time = DateTime.Now.ToString("yyyy年MM月dd日 HH時(shí)mm分ss秒");

      return View();
    }

關(guān)于vary在Http響應(yīng)頭的作用就是:告訴緩存服務(wù)器或者CDN,我還是同一個(gè)瀏覽器的請求,你給我緩存就行了,如果你換個(gè)瀏覽器去請求,那么vary的值肯定為空,那么緩存服務(wù)器就會(huì)認(rèn)為你是一個(gè)新的請求,就會(huì)去讀取最新的數(shù)據(jù)給瀏覽器

參考資料:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

禁用緩存(NoStore 和 Location.None)

在Http中 :no-store,請求和響應(yīng)的信息都不應(yīng)該被存儲(chǔ)在對方的磁盤系統(tǒng)中;

[ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]
    public IActionResult About()
    {

      ViewBag.time = DateTime.Now.ToString("yyyy年MM月dd日 HH時(shí)mm分ss秒");

      return View();
    }

ResponseCacheLocation.None是在Cache-Control設(shè)置一個(gè)no-cache屬性,讓瀏覽器不緩存當(dāng)前這個(gè)URL
緩存配置(CacheProfiles)在一個(gè)正常的項(xiàng)目中,肯定有很多個(gè)控制器,但是不可能每個(gè)控制器的緩存策略都一樣,這時(shí)候,我們就需要一個(gè)緩存的配置來靈活應(yīng)對這個(gè)問題在mvc的服務(wù)注入的時(shí)候,我們可以在option里面注入進(jìn)我們的緩存策略

services.AddMvc(option=> {
        option.CacheProfiles.Add("test1", new CacheProfile()
        {
          Duration = 5
        });
        option.CacheProfiles.Add("test2", new CacheProfile()
        {
          Location = ResponseCacheLocation.None,
          NoStore = true
        });
      });

然后我們在使用的時(shí)候,直接使用配置策略的名稱就好了

[ResponseCache(CacheProfileName = "test1")]
    public IActionResult About()
    {

      ViewBag.time = DateTime.Now.ToString("yyyy年MM月dd日 HH時(shí)mm分ss秒");

      return View();
    }

這樣我們就能和之前在特性后邊配置一樣了,而且代碼看起來也清爽了不少

總結(jié):對于響應(yīng)緩存,我個(gè)人的理解就是:MVC通過返回HTTP響應(yīng)頭,讓瀏覽器在多少時(shí)間內(nèi),執(zhí)行刷新操作的時(shí)候,不請求服務(wù)器,直接從緩存讀取。。。

相關(guān)文章

  • asp.net?core?MVC?全局過濾器之ExceptionFilter過濾器(1)

    asp.net?core?MVC?全局過濾器之ExceptionFilter過濾器(1)

    這篇文章主要為大家詳細(xì)介紹了asp.net?core?MVC?全局過濾器之ExceptionFilter過濾器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Asp.Net 音頻文件上傳和播放代碼

    Asp.Net 音頻文件上傳和播放代碼

    在網(wǎng)上找到一個(gè)名叫AspNetPager的第三方控件,將AspNetPager.dll文件引用到項(xiàng)目的Bin中。在網(wǎng)頁中可直接調(diào)用。
    2010-05-05
  • ASP.NET Core設(shè)置URLs的五種方法

    ASP.NET Core設(shè)置URLs的五種方法

    這篇文章主要介紹了ASP.NET Core設(shè)置URLs的五種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • .Net Core在程序的任意位置使用和注入服務(wù)的方法

    .Net Core在程序的任意位置使用和注入服務(wù)的方法

    這篇文章主要介紹了.Net Core在程序的任意位置使用和注入服務(wù)的方法,很多朋友對此問題都不是很清楚,于是寫這篇文章幫助大家學(xué)習(xí),需要的朋友可以參考下
    2018-10-10
  • SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式

    SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式

    這篇文章主要介紹了SqlDataReader生成動(dòng)態(tài)Lambda表達(dá)式,需要的朋友可以參考下
    2017-04-04
  • asp.net圖片文件的上傳與刪除方法

    asp.net圖片文件的上傳與刪除方法

    這篇文章主要介紹了asp.net圖片文件的上傳與刪除方法,簡單分析了jpg格式圖片的上傳與文件刪除技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • Asp.Net分頁和AspNetPager控件的使用

    Asp.Net分頁和AspNetPager控件的使用

    在Asp.Net中對頁面分頁的方法很多,可以直接用sql語句分,也可以使用.net提供的PageDataSource類來分頁,顯示的視圖同樣可以使用第三方控件AspNetPager等來顯示。
    2011-02-02
  • 深入Lumisoft.NET組件開發(fā)碰到亂碼等問題的解決方法

    深入Lumisoft.NET組件開發(fā)碰到亂碼等問題的解決方法

    本篇文章介紹了,在Lumisoft.NET組件開發(fā)中碰到亂碼等一些問題的解決方法。需要的朋友參考下
    2013-05-05
  • Asp.net發(fā)送郵件的兩種方法小結(jié)

    Asp.net發(fā)送郵件的兩種方法小結(jié)

    這幾天看了一下Asp.net發(fā)送郵件方面的東西,記得之前的IIS6上有SMTP服務(wù)器,可以直接利用這個(gè)進(jìn)行郵件發(fā)送,現(xiàn)在的開發(fā)環(huán)境是Windows 7,找了半天沒有找到,到網(wǎng)絡(luò)上查了才知道原來windows 7和Vista都將SMTP服務(wù)器去掉了,現(xiàn)在將兩種方法總結(jié)一下。
    2010-06-06
  • 在 ASP.Net Core 中使用 MiniProfiler的方法

    在 ASP.Net Core 中使用 MiniProfiler的方法

    這篇文章主要介紹了在 ASP.Net Core 中使用 MiniProfiler的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評論

高州市| 澎湖县| 清流县| 德化县| 增城市| 盖州市| 平谷区| 肇源县| 平乡县| 泰安市| 宣武区| 揭东县| 渭南市| 大同市| 建始县| 昆明市| 贺州市| 镇江市| 阿图什市| 卢氏县| 安乡县| 莒南县| 安吉县| 赣州市| 商洛市| 新郑市| 夏邑县| 长子县| 炉霍县| 扶沟县| 桃园县| 绥阳县| 来宾市| 疏勒县| 藁城市| 年辖:市辖区| 富锦市| 五家渠市| 石棉县| 吴堡县| 五河县|