日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

谈谈ASP.NET Core中的ResponseCaching

發布時間:2023/12/4 asp.net 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈ASP.NET Core中的ResponseCaching 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

前面的博客談的大多數都是針對數據的緩存,今天我們來換換口味。來談談在ASP.NET Core中的ResponseCaching,與ResponseCaching關聯密切的也就是常說的HTTP緩存。

在閱讀本文內容之前,默認各位有HTTP緩存相關的基礎,主要是Cache-Control相關的。

這里也貼兩篇相關的博客:

  • 透過瀏覽器看HTTP緩存

  • HTTP協議 (四) 緩存

回到正題,對于ASP.NET Core中的ResponseCaching,本文主要講三個相關的小內容

  • 客戶端(瀏覽器)緩存

  • 服務端緩存

  • 靜態文件緩存

  • 客戶端(瀏覽器)緩存

    這里主要是通過設置HTTP的響應頭來完成這件事的。方法主要有兩種:

    其一,直接用Response對象去設置。

    這種方式也有兩種寫法,示例代碼如下:

    public IActionResult Index()

    {

    ? ? //直接一,簡單粗暴,不要拼寫錯了就好~~

    ? ? Response.Headers[Microsoft.Net.Http.Headers.HeaderNames.CacheControl] = "public, max-age=600";

    ? ??

    ? ? //直接二,略微優雅點

    ? ? //Response.GetTypedHeaders().CacheControl = new Microsoft.Net.Http.Headers.CacheControlHeaderValue()

    ? ? //{

    ? ? //? ? Public = true,

    ? ? //? ? MaxAge = TimeSpan.FromSeconds(600)

    ? ? //};


    ? ? return View();

    }

    這兩者效果是一樣的,大致如下:

    它們都會給響應頭加上?Cache-Control: public, max-age=600,可能有人會問,加上這個有什么用?

    那我們再來看張動圖,應該會清晰不少。

    這里事先在代碼里面設置了一個斷點,正常情況下,只要請求這個action都是會進來的。

    但是從上圖可以發現,只是第一次才進了斷點,其他直接打開的都沒有進,而是直接返回結果給我們了,這也就說明緩存起作用了。

    同樣的,再來看看下面的圖,from disk cache也足以說明,它并沒有請求到服務器,而是直接從本地返回的結果。

    注:如果是刷新的話,還是會進斷點的。這里需要區分好刷新,地址欄回車等行為。不同瀏覽器也有些許差異,這里可以用fiddler和postman來模擬。

    在上面的做法中,我們將設置頭部信息的代碼和業務代碼混在一起了,這顯然不那么合適。

    下面來看看第二種方法,也是比較推薦的方法。

    其二,用ResponseCacheAttribute去處理緩存相關的事情。

    對于和上面的同等配置,只需要下面這樣簡單設置一個屬性就可以了。

    [ResponseCache(Duration = 600)]
    public IActionResult Index(){ ? ?
    ? ? ? ?return View(); }

    效果和上面是一致的!處理起來是不是簡單多了。

    既然這兩種方式都能完成一樣的效果,那么ResponseCache這個Attribute本質也是往響應頭寫了相應的值。

    但是我們知道,純粹的Attribute并不能完成這一操作,其中肯定另有玄機!

    翻了一下源碼,可以看到它實現了IFilterFactory這個關鍵的接口。

    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]

    public class ResponseCacheAttribute : Attribute, IFilterFactory, IOrderedFilter

    {

    ? ? public IFilterMetadata CreateInstance(IServiceProvider serviceProvider)

    ? ? {

    ? ? ? ? //..

    ? ? ? ??

    ? ? ? ? return new ResponseCacheFilter(new CacheProfile

    ? ? ? ? {

    ? ? ? ? ? ? Duration = _duration,

    ? ? ? ? ? ? Location = _location,

    ? ? ? ? ? ? NoStore = _noStore,

    ? ? ? ? ? ? VaryByHeader = VaryByHeader,

    ? ? ? ? ? ? VaryByQueryKeys = VaryByQueryKeys,

    ? ? ? ? });

    ? ? }

    }

    也就是說,真正起作用的是ResponseCacheFilter這個Filter,核心代碼如下:

    public void OnActionExecuting(ActionExecutingContext context)

    {

    ? ? var headers = context.HttpContext.Response.Headers;


    ? ? // Clear all headers

    ? ? headers.Remove(HeaderNames.Vary);

    ? ? headers.Remove(HeaderNames.CacheControl);

    ? ? headers.Remove(HeaderNames.Pragma);


    ? ? if (!string.IsNullOrEmpty(VaryByHeader))

    ? ? {

    ? ? ? ? headers[HeaderNames.Vary] = VaryByHeader;

    ? ? }


    ? ? if (NoStore)

    ? ? {

    ? ? ? ? headers[HeaderNames.CacheControl] = "no-store";


    ? ? ? ? // Cache-control: no-store, no-cache is valid.

    ? ? ? ? if (Location == ResponseCacheLocation.None)

    ? ? ? ? {

    ? ? ? ? ? ? headers.AppendCommaSeparatedValues(HeaderNames.CacheControl, "no-cache");

    ? ? ? ? ? ? headers[HeaderNames.Pragma] = "no-cache";

    ? ? ? ? }

    ? ? }

    ? ? else

    ? ? {

    ? ? ? ? headers[HeaderNames.CacheControl] = cacheControlValue;

    ? ? }

    }

    它的本質自然就是給響應頭部寫了一些東西。

    通過上面的例子已經知道了ResponseCacheAttribute運作的基本原理,下面再來看看如何配置出其他不同的效果。

    下面的表格列出了部分常用的設置和生成的響應頭信息。

    ResponseCache的設置響應頭
    [ResponseCache(Duration = 600, Location = ResponseCacheLocation.Client)]Cache-Control: private, max-age=600
    [ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)]Cache-Control:no-cache, no-store
    [ResponseCache(Duration = 60, VaryByHeader = "User-Agent")]Cache-Control : public, max-age=60?
    Vary : User-Agent

    注:如果NoStore沒有設置成true,則Duration必須要賦值!

    關于ResponseCacheAttribute,還有一個不得不提的屬性:CacheProfileName

    它相當于指定了一個“配置文件”,并在這個“配置文件”中設置了ResponseCache的一些值。

    這個時候,只需要在ResponseCacheAttribute上面指定這個“配置文件”的名字就可以了,而不用在給Duration等屬性賦值了。

    在添加MVC這個中間件的時候就需要把這些“配置文件”準備好!

    下面的示例代碼添加了兩份“配置文件”,其中一份名為default,默認是緩存10分鐘,還有一份名為Hourly,默認是緩存一個小時,還有一些其他可選配置也用注釋的方式列了出來。

    services.AddMvc(options =>

    {

    ? ? options.CacheProfiles.Add("default", new Microsoft.AspNetCore.Mvc.CacheProfile

    ? ? {

    ? ? ? ? Duration = 600,? // 10 min

    ? ? });


    ? ? options.CacheProfiles.Add("Hourly", new Microsoft.AspNetCore.Mvc.CacheProfile

    ? ? {

    ? ? ? ? Duration = 60 * 60,? // 1 hour

    ? ? ? ? //Location = Microsoft.AspNetCore.Mvc.ResponseCacheLocation.Any,

    ? ? ? ? //NoStore = true,

    ? ? ? ? //VaryByHeader = "User-Agent",

    ? ? ? ? //VaryByQueryKeys = new string[] { "aaa" }

    ? ? });

    });


    現在“配置文件”已經有了,下面就是使用這些配置了!只需要在Attribute上面指定CacheProfileName的名字就可以了。

    示例代碼如下:

    [ResponseCache(CacheProfileName = "default")]

    public IActionResult Index()

    {

    ? ? return View();

    }

    ResponseCacheAttribute中還有一個VaryByQueryKeys的屬性,這個屬性可以根據不同的查詢參數進行緩存!

    但是這個屬性的使用需要結合下一小節的內容,所以這里就不展開了。

    注:ResponseCacheAttribute即可以加在類上面,也可以加在方法上面,如果類和方法都加了,會優先采用方法上面的配置。

    服務端緩存

    先簡單解釋一下這里的服務端緩存是什么,對比前面的客戶端緩存,它是將東西存放在客戶端,要用的時候就直接從客戶端去取!

    同理,服務端緩存就是將東西存放在服務端,要用的時候就從服務端去取。

    需要注意的是,如果服務端的緩存命中了,那么它是直接返回結果的,也是不會去訪問Action里面的內容!有點類似代理的感覺。

    這個相比客戶端緩存有一個好處,在一定時間內,“刷新”頁面的時候會從這里的緩存返回結果,而不用再次訪問Action去拿結果。

    要想啟用服務端緩存,需要在管道中去注冊這個服務,核心代碼就是下面的兩句。

    public void ConfigureServices(IServiceCollection services)

    {

    ? ? services.AddResponseCaching();

    }


    public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    {

    ? ? app.UseResponseCaching();

    }

    當然,僅有這兩句代碼,并不能完成這里提到的服務端緩存。還需要前面客戶端緩存的設置,兩者結合起來才能起作用。

    可以看看下面的效果,

    簡單解釋一下這張圖,

  • 第一次刷新的時候,會進入中間件,然后進入Action,返回結果,Fiddler記錄到了這一次的請求

  • 第二次打開新標簽頁,直接從瀏覽器緩存中返回的結果,即沒有進入中間件,也沒有進入Action,Fiddler也沒有記錄到相關請求

  • 第三次換了一個瀏覽器,會進入中間件,直接由緩存返回結果,并沒有進入Action,此時Fiddler也將該請求記錄了下來,響應頭包含了Age

  • 第三次請求響應頭部的部分信息如下:

    Age: 16Cache-Control: public,max-age=600

    這個Age是在變化的!它就等價于緩存的壽命。

    如果啟用了日志,也會看到一些比較重要的日記信息。

    在上一小節中,我們還有提到ResponseCacheAttribute中的VaryByQueryKeys這個屬性,它需要結合ResponseCaching中間件一起用的,這點在注釋中也是可以看到的!

    //

    // Summary:

    //? ? ?Gets or sets the query keys to vary by.

    //

    // Remarks:

    //? ? ?Microsoft.AspNetCore.Mvc.ResponseCacheAttribute.VaryByQueryKeys requires the

    //? ? ?response cache middleware.

    public string[] VaryByQueryKeys { get; set; }

    舉個例子(不一定很合適)來看看,假設現在有一個電影列表頁面(http://localhost:5001),可以通過在URL地址上面加查詢參數來決定顯示第幾頁的數據。

    如果代碼是這樣寫的,

    [ResponseCache(Duration = 600)]

    public IActionResult List(int page = 0)

    {

    ? ? return Content(page.ToString());

    }

    結果就會像下面這樣,三次請求,返回的都是頁碼為0的結果!page參數,壓根就沒起作用!

    GET http://localhost:5001/Home/List HTTP/1.1

    Host: localhost:5001


    HTTP/1.1 200 OK

    Date: Thu, 05 Apr 2018 07:38:51 GMT

    Content-Type: text/plain; charset=utf-8

    Server: Kestrel

    Content-Length: 1

    Cache-Control: public,max-age=600


    0


    GET http://localhost:5001/Home/List?page=2 HTTP/1.1

    Host: localhost:5001


    HTTP/1.1 200 OK

    Date: Thu, 05 Apr 2018 07:38:51 GMT

    Content-Type: text/plain; charset=utf-8

    Server: Kestrel

    Content-Length: 1

    Cache-Control: public,max-age=600

    Age: 5


    0


    GET http://localhost:5001/Home/List?page=5 HTTP/1.1

    Host: localhost:5001


    HTTP/1.1 200 OK

    Date: Thu, 05 Apr 2018 07:38:51 GMT

    Content-Type: text/plain; charset=utf-8

    Server: Kestrel

    Content-Length: 1

    Cache-Control: public,max-age=600

    Age: 8


    0


    正確的做法應該是要指定VaryByQueryKeys,如下所示:

    [ResponseCache(Duration = 600, VaryByQueryKeys = new string[] { "page" })]

    public IActionResult List(int page = 0)

    {

    ? ? return Content(page.ToString());

    }


    這個時候的結果就是和預期的一樣了,不同參數都有對應的結果并且這些數據都緩存了起來。

    GET http://localhost:5001/Home/List HTTP/1.1Host: localhost:5001HTTP/1.1 200 OK Date: Thu, 05 Apr 2018 07:45:13 GMT Content-Type: text/plain; charset=utf-8 Server: Kestrel Content-Length: 1Cache-Control: public,max-age=6000GET http://localhost:5001/Home/List?page=2 HTTP/1.1Host: localhost:5001HTTP/1.1 200 OKDate: Thu, 05 Apr 2018 07:45:22 GMTContent-Type: text/plain; charset=utf-8 Server: Kestrel Content-Length: 1Cache-Control: public,max-age=6002GET http://localhost:5001/Home/List?page=5 HTTP/1.1Host: localhost:5001HTTP/1.1 200 OKDate: Thu, 05 Apr 2018 07:45:27 GMTContent-Type: text/plain; charset=utf-8 Server: Kestrel Content-Length: 1Cache-Control: public,max-age=6005

    ResponseCachingMiddleware在這里是用了MemoryCache來讀寫緩存數據的。如果應用重啟了,緩存的數據就會失效,要重新來過。

    靜態文件緩存

    對于一些常年不變或比較少變的js,css等靜態文件,也可以把它們緩存起來,避免讓它們總是發起請求到服務器,而且這些靜態文件可以緩存更長的時間!

    如果已經使用了CDN,這一小節的內容就可以暫且忽略掉了。。。

    對于靜態文件,.NET Core有一個單獨的StaticFiles中間件,如果想要對它做一些處理,同樣需要在管道中進行注冊。

    UseStaticFiles有幾個重載方法,這里用的是帶StaticFileOptions參數的那個方法。

    因為StaticFileOptions里面有一個OnPrepareResponse可以讓我們修改響應頭,以達到HTTP緩存的效果。

    //

    // Summary:

    //? ? ?Called after the status code and headers have been set, but before the body has

    //? ? ?been written. This can be used to add or change the response headers.

    public Action<StaticFileResponseContext> OnPrepareResponse { get; set; }


    下面來看個簡單的例子:

    app.UseStaticFiles(new StaticFileOptions

    {

    ? ? OnPrepareResponse = context =>

    ? ? {

    ? ? ? ? context.Context.Response.GetTypedHeaders().CacheControl = new Microsoft.Net.Http.Headers.CacheControlHeaderValue

    ? ? ? ? {?

    ? ? ? ? ? ? Public = true,

    ? ? ? ? ? ? //for 1 year

    ? ? ? ? ? ? MaxAge = System.TimeSpan.FromDays(365)

    ? ? ? ? };

    ? ? }

    });


    此時的效果如下:

    一些需要注意的地方

    其一,ResponseCaching中間件對下面的情況是不會進行緩存操作的!

  • 一個請求的Status Code不是200

  • 一個請求的Method不是GETHEAD

  • 一個請求的Header包含Authorization

  • 一個請求的Header包含Set-Cookie

  • 一個請求的Header包含僅有值為*的Vary

  • ...

  • 其二,當我們使用了Antiforgery的時候也要特別的注意!!它會直接把響應頭部的Cache-Control和Pragma重置成no-cache。換句話說,這兩者是水火不容的!

    詳情可見DefaultAntiforgery.cs#L381

    /// <summary>

    /// Sets the 'Cache-Control' header to 'no-cache, no-store' and 'Pragma' header to 'no-cache' overriding any user set value.

    /// </summary>

    /// <param name="httpContext">The <see cref="HttpContext"/>.</param>

    protected virtual void SetDoNotCacheHeaders(HttpContext httpContext)

    {

    ? ? // Since antifogery token generation is not very obvious to the end users (ex: MVC's form tag generates them

    ? ? // by default), log a warning to let users know of the change in behavior to any cache headers they might

    ? ? // have set explicitly.

    ? ? LogCacheHeaderOverrideWarning(httpContext.Response);


    ? ? httpContext.Response.Headers[HeaderNames.CacheControl] = "no-cache, no-store";

    ? ? httpContext.Response.Headers[HeaderNames.Pragma] = "no-cache";

    }

    當然,在某個頁面用到了Antiforgery的時候,也該避免在這個頁面使用HTTP緩存!

    它會在form表單中生成一個隱藏域,并且隱藏域的值是一個生成的token ,難道還想連這個一起緩存?

    總結

    在.NET Core中用ResponseCaching還是比較簡單的,雖然還有一些值得注意的地方,但是并不影響我們的正常使用。

    當然,最重要的還是合理使用!僅在需要的地方使用!

    最后附上文中Demo的地址 :https://github.com/catcherwong/Demos/tree/master/src/ResponseCachingDemo

    原文地址?https://www.cnblogs.com/catcher1994/p/responsecaching.html


    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的谈谈ASP.NET Core中的ResponseCaching的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久av观看 | 国产精品午夜久久久久久99热 | 国产极品尤物在线 | 久草视频在线播放 | 国产精品九九热 | 久久成人午夜视频 | 天天天天天天天操 | 最新日韩视频在线观看 | 免费91在线 | 国产精品久久久久永久免费看 | av在线一级| 搡bbbb搡bbb视频 | 日韩欧美视频在线观看免费 | 少妇视频一区 | 午夜视频在线观看一区二区三区 | 国产色视频一区二区三区qq号 | 久久精品国产一区二区电影 | 日韩在线观看的 | 国产亚洲免费的视频看 | 高潮毛片无遮挡高清免费 | 91高清一区 | 国产人成看黄久久久久久久久 | 波多野结衣视频一区 | 国产精品福利在线观看 | 亚洲 欧美日韩 国产 中文 | 日韩乱色精品一区二区 | 国产偷国产偷亚洲清高 | 日韩有码在线播放 | 国产精品videossex国产高清 | 久久久激情网 | 欧美一二三区在线播放 | 毛片888| 亚洲精品国产品国语在线 | 最新国产在线 | www视频免费在线观看 | 香蕉视频日本 | 国产精品嫩草影院123 | 少妇bbb搡bbbb搡bbbb′ | 日韩精品资源 | 天天天天天天天天操 | 欧美一区二区在线免费观看 | 国产精品一区二区三区99 | av电影在线免费 | 超碰人人在 | 91亚洲精品久久久蜜桃网站 | 天天插天天 | 国产福利网站 | 久久久久久蜜桃一区二区 | 中文字幕在线观看免费观看 | 99视频在线 | 91成熟丰满女人少妇 | 久久精品一区二区三区视频 | 视频在线91 | 中文字幕二区在线观看 | 99久热在线精品视频 | 亚洲乱码久久久 | 激情综合站 | 日韩性xxxx | 欧美日韩精品在线观看视频 | 亚洲国产播放 | 激情五月婷婷丁香 | 超级碰碰碰免费视频 | 国产成人精品一区二区三区在线观看 | 中文字幕在线观看你懂的 | 久久手机免费观看 | 97中文字幕| 日韩欧美视频一区二区三区 | 97视频免费在线看 | 国产精品自产拍在线观看中文 | 婷婷激情五月 | 一区二区精品视频 | 久久福利综合 | 久久夜色电影 | 日韩色在线观看 | 天天插天天射 | 人人揉人人揉人人揉人人揉97 | 成人午夜性影院 | 亚洲综合成人专区片 | 日韩黄视频 | 91视频午夜 | 免费看色网站 | 在线观看岛国 | 亚洲成人av电影 | 亚洲精品国精品久久99热 | 久草精品电影 | 国产精品18久久久久久不卡孕妇 | 国产在线第三页 | 综合国产在线观看 | 国产亚洲精品xxoo | 最新av在线播放 | 91精品婷婷国产综合久久蝌蚪 | 国产香蕉97碰碰碰视频在线观看 | 日本在线免费看 | 在线黄色免费av | 在线视频欧美亚洲 | 欧美尹人| 欧女人精69xxxxxx| 日批视频| 亚洲日本在线一区 | 激情动态 | 91 中文字幕 | 日韩欧美在线视频一区二区 | 韩国一区在线 | 色综合天天狠狠 | 黄色免费大片 | 丰满少妇在线观看资源站 | 亚洲视频免费在线 | 999视频在线观看 | 国产麻豆传媒 | 夜夜操狠狠干 | 97国产精品亚洲精品 | 免费91麻豆精品国产自产在线观看 | 看全黄大色黄大片 | 日韩精品中文字幕在线播放 | 国色天香第二季 | 狠狠操狠狠操 | av日韩av| 国产一级做a爱片久久毛片a | 欧美另类xxx | 欧洲高潮三级做爰 | 久久精品亚洲国产 | 手机成人免费视频 | 综合久久婷婷 | 日韩精品五月天 | 色婷婷在线视频 | av.com在线| 91九色免费视频 | 热久久免费国产视频 | 国产三级国产精品国产专区50 | 极品中文字幕 | 亚洲综合在线一区二区三区 | 97影视 | 黄色一级大片免费看 | 国产操在线 | 国产蜜臀av | 天天插天天 | 97精品伊人 | 天堂av网站| 亚洲电影一区二区 | 高清精品在线 | 中文字幕 91 | 亚洲精品国产高清 | 99在线观看视频 | 亚洲精品久久久久久中文传媒 | av在线不卡观看 | 色爽网站 | 夜色成人网 | 中文字幕第一页在线视频 | 99精品视频网 | 久久综合狠狠综合久久激情 | 成人午夜精品久久久久久久3d | 日韩成人中文字幕 | 激情欧美日韩一区二区 | 91av网站在线观看 | 911香蕉| 午夜视频在线观看一区 | 天天插天天狠 | 亚洲电影自拍 | 色婷婷国产精品 | 欧美精品久久久 | 色欧美成人精品a∨在线观看 | 欧美精品一区二区免费 | 久久新 | 91精品综合在线观看 | 在线观看国产永久免费视频 | 偷拍福利视频一区二区三区 | 精品二区视频 | 人人爽人人爱 | 久久国内精品99久久6app | 国产精品乱码久久久久久1区2区 | 精品国产黄色片 | 亚洲禁18久人片 | av片免费播放 | 深爱激情五月综合 | 久久免费高清视频 | av直接看 | 九九热免费在线视频 | 日韩在线观看视频网站 | 亚洲精品在线资源 | 91精品啪| 亚洲国产中文字幕在线观看 | 国产免费小视频 | 欧美精品久久久久久久久久 | 激情欧美一区二区三区免费看 | 一区二区三区在线观看 | 国产精品午夜在线观看 | 久久久久久久久久国产精品 | 日本特黄一级片 | 日日摸日日爽 | 在线观看日韩av | 国产精品第一 | 久久久精品欧美一区二区免费 | 成人av网站在线播放 | 欧美日韩不卡在线观看 | 欧美最猛性xxxxx亚洲精品 | 中文字幕 欧美性 | 久久永久免费视频 | 全黄色一级片 | 日韩欧美国产免费播放 | 欧美成人91 | 999色视频| 午夜18视频在线观看 | 大胆欧美gogo免费视频一二区 | 成人免费在线观看电影 | 男女激情片在线观看 | 91精品久久久久久综合乱菊 | 69夜色精品国产69乱 | 久久欧美综合 | 91视频91自拍| 国产亚洲精品久 | 国产精品久久久久影院日本 | 2017狠狠干| 亚洲激色 | 国产超碰97 | 久色婷婷 | 视频二区在线视频 | 在线观看你懂的网址 | 国产精品久久精品国产 | 91视频xxxx | 亚洲精品网站 | 我要色综合天天 | 国产一区二区网址 | 国产中文字幕久久 | 黄色av网站在线免费观看 | 亚洲久草视频 | 国产精品久久久一区二区三区网站 | 国产午夜精品一区二区三区四区 | 欧美在线观看视频 | 精品久久久久国产免费第一页 | 日韩av中文字幕在线 | 九九久久电影 | 亚洲欧美视频在线 | 婷婷色伊人 | 午夜精品视频一区二区三区在线看 | 中文字幕在线观看91 | 特黄特色特刺激视频免费播放 | 九九热精品视频在线观看 | 日韩国产欧美在线播放 | 久久黄色精品视频 | 香蕉视频在线观看免费 | 欧美成人手机版 | 在线播放精品一区二区三区 | 久草在线精品观看 | 亚洲一区免费在线 | 91久久国产自产拍夜夜嗨 | av免费看在线 | 久久久久美女 | 香蕉网在线观看 | 99精品视频观看 | 国内99视频 | 天堂av在线网 | 天天干,夜夜操 | 日本久久电影 | 激情中文在线 | 超碰免费在线公开 | 九九免费在线观看 | 天天天天射 | 伊人天天干| 色就是色综合 | 国产精品99久久久久人中文网介绍 | 99免费在线视频观看 | 有码一区二区三区 | 丁香在线观看完整电影视频 | 国产中年夫妇高潮精品视频 | 国产精品一区二区在线播放 | 国产福利电影网址 | 国产伦理久久精品久久久久_ | 欧美日韩一区二区视频在线观看 | 精品自拍sae8—视频 | 久久伦理电影网 | www激情网| 久草在线视频看看 | 中文字幕资源网 | 天天干天天综合 | 大荫蒂欧美视频另类xxxx | 国产欧美在线一区 | 午夜免费电影院 | 国产看片网站 | 久久国产精品精品国产色婷婷 | 欧美在线不卡一区 | 夜夜爱av| 高清视频一区 | 特级西西444www大精品视频免费看 | 国际精品久久久 | 99久热在线精品视频成人一区 | 久久免费视频这里只有精品 | 久久人人爽爽人人爽人人片av | 国产91勾搭技师精品 | 免费在线观看亚洲视频 | 五月综合色婷婷 | 三级午夜片 | 精品国产一二三 | 91精品国产乱码久久桃 | 国产日韩欧美在线免费观看 | 色视频网页 | 97精品超碰一区二区三区 | 国产成人福利在线 | 国产高清在线免费观看 | av官网 | 久久久久综合精品福利啪啪 | 色在线国产 | 日韩成人在线一区二区 | 精品高清美女精品国产区 | 福利在线看片 | 国产九九九九九 | 国产精品黄色在线观看 | 亚洲天堂网站视频 | 精品国产欧美一区二区三区不卡 | av高清一区| 亚洲人在线视频 | 久久99精品波多结衣一区 | 操高跟美女 | 欧美精品三级在线观看 | 国内精品久久久久影院日本资源 | 91免费高清视频 | 99热超碰在线 | 久久精品一 | a久久免费视频 | 亚洲精品裸体 | 久久久久久久久毛片精品 | 亚洲精品美女在线观看播放 | 96视频在线 | 亚洲国产高清在线观看视频 | 免费在线一区二区三区 | 天海冀一区二区三区 | 五月天六月婷 | 人人爽人人av | 又污又黄网站 | 国产亚洲精品v | 国产精品一级在线 | 综合影视 | 99精品视频播放 | 日本中文字幕影院 | 99热在线精品观看 | 国产视频欧美视频 | av福利网址导航 | 青春草免费视频 | 91网页版在线观看 | 免费福利影院 | 在线观看网站黄 | 麻豆国产精品va在线观看不卡 | 欧美性大战 | 欧美-第1页-屁屁影院 | 日韩伦理片一区二区三区 | 五月黄色 | 久久久久国产精品午夜一区 | 香蕉视频18 | 日韩欧美一区二区三区在线 | 欧美激情xxxx性bbbb | 亚洲精品欧美视频 | 色 免费观看 | 激情大尺度视频 | 国产精品21区 | www.香蕉视频 | 在线a亚洲视频播放在线观看 | 一二三区在线 | 成人在线视频一区 | 国内精品视频在线播放 | 亚洲最大的av网站 | 99视频国产精品 | a√天堂中文在线 | 亚洲精品av中文字幕在线在线 | 欧美最猛性xxxxx亚洲精品 | 欧美精品午夜 | 国产精品久久久久久麻豆一区 | 日韩精品免费一区二区三区 | 国产乱码精品一区二区三区介绍 | 欧洲不卡av | 中文字幕4 | 免费看黄视频 | 黄色一区二区在线观看 | 色资源网在线观看 | 在线观看视频国产 | 久久综合久久综合这里只有精品 | 手机看片| 久久最新 | 人人澡人摸人人添学生av | 偷拍福利视频一区二区三区 | 婷婷色资源 | 国产黄在线播放 | 日韩极品视频在线观看 | 97精品超碰一区二区三区 | 国产色拍拍拍拍在线精品 | 久久成年人视频 | 亚洲精品自拍视频在线观看 | 天天操天天干天天操天天干 | 欧美日韩不卡在线观看 | 国产99久久精品一区二区永久免费 | 亚洲综合狠狠干 | 中文网丁香综合网 | 在线视频福利 | 国产伦精品一区二区三区照片91 | 久久狠狠亚洲综合 | 超碰人人做 | 免费看色视频 | 娇妻呻吟一区二区三区 | 在线视频你懂得 | 日日干天天操 | 亚洲视频在线观看网站 | 四虎影视精品 | 中文在线8新资源库 | 国内揄拍国内精品 | 丁香婷婷激情网 | 亚洲另类人人澡 | 日韩欧美精品在线观看 | 在线观看久久久久久 | 亚洲欧洲一区二区在线观看 | 在线观看中文字幕dvd播放 | 四季av综合网站 | 91看片成人 | 一区二区精品视频 | 亚洲精品中文字幕在线观看 | 久热只有精品 | 中文字幕在 | 久久激情综合网 | 日韩在线网 | 国产精品一区二区久久久 | 在线视频亚洲 | 97在线影视 | 亚洲精品乱码久久久久久9色 | 亚洲片在线观看 | 91精品无人成人www | 久久久国产日韩 | 日日夜夜免费精品 | 亚洲另类人人澡 | 免费观看www7722午夜电影 | 久久久免费精品国产一区二区 | 久久久受www免费人成 | 在线日本看片免费人成视久网 | 日韩av中文| 中文字幕高清视频 | 日韩在线观看视频一区二区三区 | 欧洲亚洲女同hd | 亚洲午夜精品久久久久久久久久久久 | 国产区欧美 | 天天射天天射天天 | 色婷婷狠狠五月综合天色拍 | 久久久99精品免费观看app | 精品久久久久久国产91 | 久久试看| 天堂在线视频免费观看 | 在线国产精品一区 | www.夜色321.com | 九九热在线播放 | 日本午夜在线观看 | 日日夜夜天天久久 | 成片免费 | 中文字幕在线观看视频网站 | 视频一区二区在线观看 | 成人午夜性影院 | 亚洲日本一区二区在线 | 五月婷婷综合网 | 国产麻豆精品传媒av国产下载 | 啪嗒啪嗒免费观看完整版 | 99久久精品无免国产免费 | 天天操天天舔天天干 | 在线视频婷婷 | 97色资源| 国产精品精品久久久久久 | 久久免费视频这里只有精品 | 丁香婷婷在线观看 | 在线看中文字幕 | 91丨九色丨高潮丰满 | 国产精品99精品久久免费 | 亚洲精品视频在线观看免费 | 亚洲精品综合一区二区 | 婷婷在线免费视频 | 亚洲视频 中文字幕 | 久久r精品 | 97超碰免费 | 成人黄色视 | 久久国产免费看 | 99国产精品久久久久老师 | 97碰在线视频 | 国产黄色特级片 | 国产精品福利午夜在线观看 | 亚洲国产成人精品久久 | 亚洲国产中文字幕 | 久久久亚洲国产精品麻豆综合天堂 | 在线免费观看欧美日韩 | 亚洲mv大片欧洲mv大片免费 | 天天操偷偷干 | 国产精品 欧美 日韩 | 中文字幕国语官网在线视频 | 一级片视频在线 | 日韩av片在线 | 成年人黄色大片在线 | 欧美日韩啪啪 | 亚洲精品视频偷拍 | 日韩成人黄色av | 国产三级在线播放 | www.黄色片网站 | 亚洲年轻女教师毛茸茸 | 特级黄录像视频 | 中文字幕大全 | 中文字幕婷婷 | 高清一区二区三区 | 日本中文字幕网 | 韩国中文三级 | 黄色一级影院 | 91免费视频国产 | 久久99精品久久久久婷婷 | 精品久久久久免费极品大片 | 欧美91视频| 国产精品久久艹 | 久久亚洲综合国产精品99麻豆的功能介绍 | 亚洲欧美日韩在线看 | 9免费视频 | 欧美精品久久久久久久久老牛影院 | 丁香花在线观看视频在线 | a黄色| 91手机视频在线 | 久久综合干| 在线播放你懂 | 大片网站久久 | 国产一性一爱一乱一交 | 国产精品一区二区免费看 | 国产精品久久久久久久久久久不卡 | 在线日韩视频 | 成人h电影在线观看 | 精品在线你懂的 | 在线高清av| 日本成址在线观看 | 97超碰站| 日韩精品一区在线播放 | 免费看在线看www777 | 国产精品电影在线 | 中文字幕av影院 | 婷婷久久五月 | 亚洲天堂毛片 | 久久女同性恋中文字幕 | 干干日日 | www黄com| 国产亚洲一区二区三区 | 国产精品免费视频观看 | 久久久高清视频 | 99精品电影| 日本免费久久高清视频 | 五月综合婷 | 草久在线 | 精品自拍av | 色国产视频 | 在线中文视频 | av黄色av| 国产精品美女久久久久久久久 | 日韩一三区 | 日韩av不卡在线 | 超碰97在线资源 | 亚洲精品中文在线资源 | av片中文字幕 | 国产精品美女久久久久久免费 | 亚洲精品综合一区二区 | 亚洲精品黄色 | 特片网久久 | 在线免费视频a | 狠狠操精品| 在线免费视频一区 | 久久久国产视频 | 韩国一区二区在线观看 | 伊人看片 | 91亚洲精品久久久蜜桃 | 丁香六月综合网 | 久久视频免费 | 精品视频免费看 | 波多野结衣一区三区 | 国产亚洲综合性久久久影院 | 美女久久久 | 国产黄网在线 | www.香蕉 | 欧美日韩视频在线观看一区二区 | 精品久久网| 亚洲最大av| 天天干天天看 | 狠狠色丁香久久婷婷综 | 四虎影视www | 国产最新在线 | 日韩电影中文,亚洲精品乱码 | 国产在线精品一区二区不卡了 | 天天干夜夜爱 | 在线精品在线 | 国产91亚洲 | 狠狠色伊人亚洲综合网站色 | 国产日韩欧美在线影视 | 97精品国产97久久久久久粉红 | 日韩激情视频在线 | 在线成人一区 | 久久理论视频 | 三级视频国产 | 久久五月婷婷丁香 | 日韩高清一二区 | 五月天六月婷 | 在线视频 日韩 | 成人av日韩 | 久久蜜桃av| 91视频 - 88av| 精品国产一区二区三区四区在线观看 | 麻豆久久久久久久 | 91桃色国产在线播放 | 精品黄色片 | 亚洲情感电影大片 | 久久精品视频在线观看免费 | 色视频在线观看 | 干天天| 月下香电影 | 激情欧美丁香 | 又黄又刺激又爽的视频 | 久久艹精品 | 六月丁香社区 | 在线高清| 日韩在线免费观看视频 | 国产精品久久久久久999 | 亚洲女在线 | 蜜臀av性久久久久av蜜臀妖精 | 日韩欧美在线国产 | 日韩欧美精品在线观看视频 | 精品字幕在线 | 日韩欧美视频在线观看免费 | 欧美日韩中文国产一区发布 | 亚洲精色| 九九热免费在线观看 | 欧美在线视频一区二区三区 | 免费福利片| 久久这里只有精品23 | 久久人人爽人人爽人人片av软件 | 又黄又刺激视频 | 欧美成人在线网站 | 在线国产一区二区 | 久久精品3| 麻豆国产视频 | 国产中文字幕在线看 | 国产视频手机在线 | 久久爱资源网 | 日韩丝袜在线观看 | 亚洲欧美综合精品久久成人 | 免费在线一区二区 | 四虎国产视频 | 国产一区二区三区在线免费观看 | 日韩丝袜视频 | 欧美在线aa | 国产亚洲精品免费 | 免费国产ww | 永久免费观看视频 | 国产免费观看视频 | 亚洲永久精品国产 | 欧美-第1页-屁屁影院 | 国产亚洲精品久久久久久 | 美女视频黄是免费的 | 永久精品视频 | 超碰com| 狠狠做深爱婷婷综合一区 | 精品国产99国产精品 | 国产午夜三级一区二区三桃花影视 | 欧洲精品视频一区 | 亚洲少妇自拍 | 欧美午夜寂寞影院 | 久久人视频 | 91av原创 | 日韩在线不卡视频 | 中文在线字幕免 | 免费看片亚洲 | 国产精品av久久久久久无 | 视频成人 | 在线视频 区 | 丝袜美腿av | 日本中文字幕观看 | 在线视频日韩 | 有码中文字幕 | 五月激情综合婷婷 | 午夜精品久久久久久久99 | 超碰免费公开 | 在线免费视 | 在线观看黄a | 免费看搞黄视频网站 | 精品国产免费观看 | 在线成人短视频 | 日日夜夜精品视频 | 五月婷社区 | 国产在线播放观看 | 久久99热国产 | 黄色大片日本 | 国产精久久 | 午夜视频不卡 | 精品久久中文 | 成人毛片久久 | 天天操天天干天天插 | 免费一级日韩欧美性大片 | 精品久久久久久亚洲综合网站 | 国产精品一区二区三区视频免费 | 日本中文字幕影院 | 波多野结衣在线视频免费观看 | 中文字幕精 | 久久国产精品久久国产精品 | 国产色在线 | 亚洲日本精品视频 | 日韩a级免费视频 | www.色就是色 | 99热这里有精品 | 96视频在线| 婷婷婷国产在线视频 | 天堂av免费| 草在线视频 | 久草爱 | 五月天激情开心 | 国产精品亚洲成人 | 日本少妇高清做爰视频 | 国产成人精品一区二区三区福利 | 精品亚洲男同gayvideo网站 | 天堂av免费在线 | 亚洲精品女人 | 91精品导航 | 久久av一区二区三区亚洲 | 国产午夜三级一区二区三桃花影视 | 人人超在线公开视频 | 免费视频二区 | 99久久婷婷国产精品综合 | 99精品在线免费视频 | www.久艹| 五月婷婷在线视频观看 | 欧美在线观看视频免费 | 久久久美女 | 丁香五月亚洲综合在线 | 国产又粗又猛又色又黄视频 | 国产无套精品久久久久久 | 久草在线视频网站 | 中文字幕一区在线 | 91精品国产综合久久婷婷香蕉 | 99情趣网视频 | 日韩精品不卡 | 九九热精品视频在线播放 | 久久99精品久久久久久秒播蜜臀 | 国产精品18久久久久久久久 | 美女视频黄是免费的 | 狠狠插狠狠操 | 91精品国产91p65 | 高清免费av在线 | av大全在线观看 | 久久成| 久久99久久久久 | 深爱激情五月网 | 免费久久99精品国产婷婷六月 | 免费在线中文字幕 | 亚洲一级黄色大片 | 国产精品99久久久久的智能播放 | 久久精品国产亚洲精品2020 | 成人资源网 | 三级av在线免费观看 | 五月婷婷.com| 日本一区二区三区免费观看 | 成人小视频在线免费观看 | 又黄又爽免费视频 | 天天操夜夜操国产精品 | 最近2019年日本中文免费字幕 | 国产视频在线观看一区二区 | av在线在线 | 国产精品女人久久久 | 久久黄网站 | av在线8 | 日韩在线视频观看 | 国产精品99久久久久的智能播放 | 成人网在线免费视频 | 国产精品免费人成网站 | 国产精品成人aaaaa网站 | 日韩极品视频在线观看 | 91成人破解版 | 五月天色网站 | 蜜臀一区二区三区精品免费视频 | 国产视频日本 | 欧美精品免费在线 | 免费在线观看成人小视频 | 亚洲日本国产精品 | 狠狠婷婷 | 国产精品成人久久久久久久 | 婷婷去俺也去六月色 | 欧美精品久久久久a | 欧美亚洲国产一卡 | 免费在线播放视频 | 日韩色在线观看 | 免费在线观看国产精品 | 深夜视频久久 | 久草视频免费 | 天海翼一区二区三区免费 | 波多野结衣久久资源 | 亚洲精品在线免费 | 日韩在线观看精品 | 中文字幕国产一区 | 91在线日韩 | 国产精品久久一区二区无卡 | 99视频在线精品 | 香蕉久久久久 | 国产精品资源在线 | 久久一区二区三区国产精品 | 青草草在线 | 色网站在线免费 | 欧美影片 | 久久成人国产精品免费软件 | 精品国产1区2区3区 国产欧美精品在线观看 | 中文字幕123区| 9992tv成人免费看片 | 国内外成人免费在线视频 | 精品久久久久久一区二区里番 | 亚洲天堂网视频在线观看 | 国产成人综合图片 | 99超碰在线观看 | 四虎影视国产精品免费久久 | 久久99亚洲精品久久 | 欧美日韩国产一区二区在线观看 | 久久久免费观看视频 | 精品一区二区亚洲 | 91久久影院 | 久久久亚洲网站 | 首页国产精品 | av资源免费观看 | 亚洲成人黄色在线观看 | 国产一级视频免费看 | 久久综合久久88 | 亚洲成人影音 | 天天插一插| 久久精品中文视频 | 免费视频黄色 | 热re99久久精品国产99热 | 午夜影院三级 | 五月婷婷亚洲 | 成人久久免费 | 中文字幕成人网 | 中文字幕亚洲欧美日韩2019 | 日本中文一级片 | 福利视频一区二区 | 欧美精品久久人人躁人人爽 | 久爱精品在线 | 国产精品专区在线观看 | 精品国产视频一区 | 免费高清在线观看成人 | 国产免费国产 | 玖玖精品在线 | www.黄色片网站| 天天摸天天干天天操天天射 | 国产成人一区在线 | 在线视频欧美日韩 | 亚洲精品五月天 | 亚洲一区二区麻豆 | 99精品国产一区二区三区麻豆 | 麻花天美星空视频 | 天天色天天射天天干 | 99视频国产精品免费观看 | 97超碰人人 | 国产精品久久久久久久电影 | 韩日精品在线观看 | 色综合久久五月天 | 久久久久久久久免费视频 | 激情五月五月婷婷 | 国产91精品一区二区麻豆网站 | 中文国产在线观看 | 精品国产一区二区三区噜噜噜 | 久久毛片视频 | 亚洲在线观看av | 久久精品日本啪啪涩涩 | 麻豆系列在线观看 | 91福利影院在线观看 | 99精品视频在线观看免费 | 一区二区视频在线看 | 精品理论片 | 亚洲综合丁香 | 国产又粗又猛又黄又爽视频 | 亚洲不卡av一区二区三区 | 日韩免费三区 | 亚洲免费在线视频 | 国产成a人亚洲精v品在线观看 | www.天天成人国产电影 | 国产精品18久久久久久久网站 | 黄色影院在线播放 | 日韩精品中文字幕久久臀 | 美女久久精品 | 丰满少妇对白在线偷拍 | 久久久久看片 | 久久精品一二三区白丝高潮 | 91精品国产三级a在线观看 | 日韩欧美国产精品 | 丁香在线视频 | av韩国在线 | 久久私人影院 | 国产精品涩涩屋www在线观看 | 热久久免费视频 | www黄在线 | 久久综合中文字幕 | 久久不卡电影 | 天天天在线综合网 | 国产精彩视频一区二区 | 午夜视频在线网站 | 中文在线8新资源库 | av夜夜操 | 亚洲精品在线观看视频 | 精品国产乱码一区二区三区在线 | 成人在线观看免费视频 | 五月婷婷六月综合 | 精品视频资源站 | 久久视屏网| 久久艹99| 在线免费视频 你懂得 | 欧美巨乳网 | 米奇狠狠狠888| 久久精品电影网 | 久久人人爽人人爽人人 | 日韩高清成人在线 | 韩国av免费观看 | 日日夜夜免费精品视频 | 国产小视频你懂的 | 成年人免费观看国产 | 主播av在线 | 亚洲国产成人精品电影在线观看 | 日韩精品久久一区二区 | 国产精品96久久久久久吹潮 | 精品伊人久久久 | 成人免费中文字幕 | 在线观看91av | 亚洲高清在线视频 | 91最新在线 | 少妇激情久久 | 国产高清成人av | 五月婷婷丁香六月 | 狠狠操导航 | 9幺看片 | 日本丰满少妇免费一区 | 高清有码中文字幕 | 国产综合在线观看视频 | 91在线视频导航 | 国产99久久精品一区二区永久免费 | 玖玖在线资源 | 99久高清在线观看视频99精品热在线观看视频 | 亚洲 欧洲av | 欧美午夜视频在线 | 天天操天天舔天天干 | 国产群p视频 | 亚洲精品免费在线观看 | 视频国产| 亚洲一区二区高潮无套美女 | 国产成人亚洲在线观看 | www.777奇米 | 免费看的毛片 | 一区二区三区精品在线 | 亚洲人成综合 | 992tv在线观看网站 | 亚洲精选在线 | 欧美性爽爽 | 国产精品11 | 97成人精品视频在线播放 | 在线a人片免费观看视频 | 成人国产精品电影 | 国产视频资源在线观看 | 337p西西人体大胆瓣开下部 | 麻豆视频在线免费 | 国产最新在线观看 | 日韩天天综合 | 五月婷婷在线视频 | 国产精品午夜8888 | 国产香蕉97碰碰久久人人 | 日韩91av| 日韩免费电影一区二区 | 中文字幕一区二区三区久久 | 久久爽久久爽久久av东京爽 | 久久 精品一区 | 99精彩视频在线观看免费 | av在线播放中文字幕 | 国产色拍拍拍拍在线精品 | 欧美国产不卡 | 亚洲精品久久久久久久不卡四虎 | 香蕉视频在线免费 | 日韩精品一区二区在线 | 最近免费中文字幕 | 国产在线观看中文字幕 | 国产精品大片在线观看 | 亚洲国产精品va在线看黑人动漫 | 91在线免费看片 | 国产精品久久久久久超碰 | 夜夜操天天 | 欧美久久久久久久久中文字幕 | 亚洲黄色在线免费观看 | 国产精品久久在线 | 在线播放 一区 | 人人玩人人添人人 | 亚洲久草网 | 色人久久 | 91传媒在线| 超碰在线天天 | 97精品国产97久久久久久 | 久久手机免费视频 | 中文字幕精品一区久久久久 | 99精品国产99久久久久久福利 | 精品国产一区二区三区免费 | 成人网在线免费视频 | 免费av网站观看 | 国产高清成人 | 久久精品在线 | 欧美一区二区三区四区夜夜大片 | 久久免费黄色网址 | 亚洲一二区精品 | 97天堂| 超碰在线人人草 | 欧美福利久久 |