1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        如何讓10萬(wàn)條數(shù)據(jù)的小程序列表如絲般順滑

        共 16828字,需瀏覽 34分鐘

         ·

        2021-08-01 00:08

        點(diǎn)擊上方 程序員成長(zhǎng)指北,關(guān)注公眾號(hào)

        回復(fù)1,加入高級(jí)Node交流群

        虛擬列表的github地址

        https://github.com/lmn1919/wechatApp-dome/tree/main/pages/list-scroll-view


        作者:lmq1919

        https://juejin.cn/post/6966904317148299271


        某天閑著無(wú)聊想練一下手速,去上拉一個(gè)小程序項(xiàng)目中一個(gè)有1萬(wàn)多條商品數(shù)據(jù)的列表。在數(shù)據(jù)加載到1000多條后,是列表居然出現(xiàn)了白屏。看了一下控制臺(tái):

        圖一

        ‘Dom limit exceeded’,dom數(shù)超出了限制, 不知道微信是出于什么考慮,要限制頁(yè)面的dom數(shù)量。

        一.小程序頁(yè)面限制多少個(gè)wxml節(jié)點(diǎn)?

        寫(xiě)了個(gè)小dome做了個(gè)測(cè)試。listData的數(shù)據(jù)結(jié)構(gòu)為:

        listData:[
           {
            isDisplay:true,
            itemList:[{
                  qus:'下面哪位是劉發(fā)財(cái)女朋友?',
                  answerA:'劉亦菲',
                  answerB:'迪麗熱巴',
                  answerC:'齋藤飛鳥(niǎo)',
                  answerD:'花澤香菜',
               }
              .......//20條數(shù)據(jù)
             ]
           }]

        頁(yè)面渲染效果:

        圖二

        1.dome1

        <view wx:for="{{listData}}" class="first-item"  wx:for-index="i" wx:for-item="firstItem" wx:key="i" wx:if="{{firstItem.isDisplay}}">
             <view class="item-list" wx:for="{{firstItem.itemList}}" wx:key="index">
                 <view>{{item.qus}}</view>
                 <view class="answer-list">
                      <view>A. <text>{{item.answerA}}</text></view>
                      <view>B. <text>{{item.answerB}}</text></view>
                      <view>C. <text>{{item.answerC}}</text></view>
                      <view>D. <text>{{item.answerD}}</text></view>
                 </view>
            </view>       
        </view>
        復(fù)制代碼
        圖三  運(yùn)行結(jié)果:渲染了72*20條數(shù)據(jù)

        2.dome2,刪除了不必要的dom嵌套

        <view wx:for="{{listData}}" class="first-item"  wx:for-index="i" wx:for-item="firstItem" wx:key="i" wx:if="{{firstItem.isDisplay}}">
             <view class="item-list" wx:for="{{firstItem.itemList}}" wx:key="index">
                 <view>{{item.qus}}</view>
                 <view class="answer-list">
                      <view>A. {{item.answerA}}</view>
                      <view>B. {{item.answerB}}</view>
                      <view>C. {{item.answerC}}</view>
                      <view>D. {{item.answerD}}</view>
                 </view>
            </view>       
        </view>
        復(fù)制代碼
        圖四   運(yùn)行結(jié)果:渲染了113*20條數(shù)據(jù)

        通過(guò)大致計(jì)算,一個(gè)小程序頁(yè)面大概可以渲染2萬(wàn)個(gè)wxml節(jié)點(diǎn) 而小程序官方的性能測(cè)評(píng)得分條件為少于1000個(gè)wxml節(jié)點(diǎn)[官方鏈接](https://developers.weixin.qq.com/miniprogram/dev/framework/audits/performance.html#5. setData數(shù)據(jù)大小)

        圖五  小程序性能評(píng)分

        二.列表頁(yè)面優(yōu)化

        1.減少不必要的標(biāo)簽嵌套

        由上面的測(cè)試dome可知,在不影響代碼運(yùn)行和可讀性的前提下,盡量減少標(biāo)簽的嵌套,可以大幅的增加頁(yè)面數(shù)據(jù)的列表?xiàng)l數(shù),畢竟公司不是按代碼行數(shù)發(fā)工資的。如果你的列表數(shù)據(jù)量有限,可以用這種方法來(lái)增加列表渲染條數(shù)。如果數(shù)據(jù)量很大,再怎么精簡(jiǎn)也超過(guò)2萬(wàn)的節(jié)點(diǎn),這個(gè)方法則不適用。

        2.優(yōu)化setData的使用

        圖五所示,小程序setDate的性能會(huì)受到setData數(shù)據(jù)量大小和調(diào)用頻率限制。所以要圍繞減少每一次setData數(shù)據(jù)量大小,降低setData調(diào)用頻率進(jìn)行優(yōu)化。#####(1)刪除冗余字段 后端的同事經(jīng)常把數(shù)據(jù)從數(shù)據(jù)庫(kù)中取出就直接返回給前端,不經(jīng)過(guò)任何處理,所以會(huì)導(dǎo)致數(shù)據(jù)大量的冗余,很多字段根本用不到,我們需要把這些字段刪除,減少setDate的數(shù)據(jù)大小。#####(2)setData的進(jìn)階用法 通常,我們對(duì)data中數(shù)據(jù)的增刪改操作,是把原來(lái)的數(shù)據(jù)取出,處理,然后用setData整體去更新,比如我們列表中使用到的上拉加載更多,需要往listData尾部添加數(shù)據(jù):

            newList=[{...},{...}];
           this.setData({
             listData:[...this.data.listData,...newList]
           })
        復(fù)制代碼

        這樣會(huì)導(dǎo)致setDate的數(shù)據(jù)量越來(lái)越大,頁(yè)面也越來(lái)越卡。

        setDate的正確使用姿勢(shì)

        • setDate修改數(shù)據(jù)

        比如我們要修改數(shù)組listData第一個(gè)元素的isDisplay屬性,我們可以這樣操作:

          let index=0;
          this.setData({
             [`listData[${index}].isDisplay`]:false,
          })
        復(fù)制代碼

        如果我們想同時(shí)修改數(shù)組listData中下標(biāo)從0到9的元素的isDisplay屬性,那要如何處理呢?你可能會(huì)想到用for循環(huán)來(lái)執(zhí)行setData

          for(let index=0;index<10;index++){
             this.setData({
                [`listData[${index}].isDisplay`]:false,
             })
          }

        那么這樣就會(huì)導(dǎo)致另外一個(gè)問(wèn)題,那就是listData的調(diào)用過(guò)于頻繁,也會(huì)導(dǎo)致性能問(wèn)題,正確的處理方式是先把要修改的數(shù)據(jù)先收集起來(lái),然后調(diào)用setData一次處理完成:

          let changeData={};
          for(let index=0;index<10;index++){
              changeData[[`listData[${index}].isDisplay`]]=false;
          }
          this.setData(changeData);

        這樣我們就把數(shù)組listData中下標(biāo)從0到9的元素的isDisplay屬性改成了false。

        • setDate往數(shù)組末尾添加數(shù)據(jù)

        如果只添加一條數(shù)據(jù)

          let newData={...};
          this.setData({
            [`listData[${this.data.listData.length}]`]:newData
          })

        如果是添加多條數(shù)據(jù)

          let newData=[{...},{...},{...},{...},{...},{...}];
          let changeData={};
          let index=this.data.listData.length
            newData.forEach((item) => {
                newData['listData[' + (index++) + ']'] = item //賦值,索引遞增
            }) 
          this.setData(changeData)

        至于刪除操作,還沒(méi)有找到更好的方法,不知道大家有什么方法可以分享嗎?

        三.使用自定義組件

        可以把列表的一行或者多行封裝到自定義組件里,在列表頁(yè)使用一個(gè)組件,只算一個(gè)節(jié)點(diǎn),這樣你的列表能渲染的數(shù)據(jù)可以成倍數(shù)的增加。組件內(nèi)的節(jié)點(diǎn)數(shù)也是有限制的,但是你可以一層層嵌套組件實(shí)現(xiàn)列表的無(wú)限加載,如果你不怕麻煩的話

        四.使用虛擬列表

        經(jīng)過(guò)上面的一系列操作后,列表的性能會(huì)得到很大的提升,但是如果數(shù)據(jù)量實(shí)在太大,wxml節(jié)點(diǎn)數(shù)也會(huì)超出限制,導(dǎo)致頁(yè)面發(fā)生錯(cuò)誤。我們的處理方法是使用虛擬列表,頁(yè)面只渲染當(dāng)前可視區(qū)域以及可視區(qū)域上下若干條數(shù)據(jù)的節(jié)點(diǎn),通過(guò)isDisplay控制節(jié)點(diǎn)的渲染。

        • 可視區(qū)域上方:above
        • 可視區(qū)域:screen
        • 可視區(qū)域下方:below
        圖六  節(jié)點(diǎn)渲染示意圖

        1.listData數(shù)組的結(jié)構(gòu)

        使用二維數(shù)組,因?yàn)槿绻且痪S數(shù)組,頁(yè)面滾動(dòng)需要用setData設(shè)置大量的元素isDispaly屬性來(lái)控制列表的的渲染。而二維數(shù)組可以這可以一次調(diào)用setData控制十條,二十條甚至更多的數(shù)據(jù)的渲染。

        listData:[
           {
            isDisplay:true,
            itemList:[{
                  qus:'下面哪位是劉發(fā)財(cái)女朋友?',
                  answerA:'劉亦菲',
                  answerB:'迪麗熱巴',
                  answerC:'齋藤飛鳥(niǎo)',
                  answerD:'花澤香菜',
               }
              .......//二維數(shù)組中的條數(shù)根據(jù)項(xiàng)目實(shí)際情況
             ]
           }]

        2.必要的參數(shù)

           data{
               itemHeight:4520,//列表第一層dom高度,單位為rpx
               itemPxHeight:'',//轉(zhuǎn)化為px高度,因?yàn)樾〕绦颢@取的滾動(dòng)條高度單位為px
               aboveShowIndex:0,//已渲染數(shù)據(jù)的第一條的Index
               belowShowNum:0,//顯示區(qū)域下方隱藏的條數(shù)
               oldSrollTop:0,//記錄上一次滾動(dòng)的滾動(dòng)條高度,判斷滾動(dòng)方向
               prepareNum:5,//可視區(qū)域上下方要渲染的數(shù)量
               throttleTime:200,//滾動(dòng)事件節(jié)流的時(shí)間,單位ms
           }

        3.wxml的dom結(jié)構(gòu)

            <!-- above區(qū)域的 -->
            <view class="above-box" style="height:{{aboveShowIndex*itemHeight}}rpx"> </view>
           <!-- 實(shí)際渲染的區(qū)域的 -->
            <view wx:for="{{listData}}" class="first-item"  wx:for-index="i" wx:for-item="firstItem" wx:key="i" wx:if="{{firstItem.isDisplay}}">
                <view class="item-list" wx:for="{{firstItem.itemList}}" wx:key="index">
                   <view>{{item.qus}}</view>
                   <view class="answer-list">
                        <view>A. {{item.answerA}}</view>
                        <view>B. {{item.answerB}}</view>
                        <view>C. {{item.answerC}}</view>
                        <view>D. {{item.answerD}}</view>
                   </view>
                </view>   
            </view>
            <!-- below區(qū)域的 -->
            <view  class="below-box" style="height:{{belowShowNum*itemHeight}}rpx"> </view>

        4.獲取列表第一層dom的px高度

          let query = wx.createSelectorQuery();
          query.select('.content').boundingClientRect(rect=>{
            let clientWidth = rect.width;
            let ratio = 750 / clientWidth;
            this.setData({
              itemPxHeight:Math.floor(this.data.itemHeight/ratio),
             })
           }).exec();

        5.頁(yè)面滾動(dòng)時(shí)間節(jié)流

        function throttle(fn){
          let valid = true
          return function({
             if(!valid){
                 return false 
             }
             // 工作時(shí)間,執(zhí)行函數(shù)并且在間隔期內(nèi)把狀態(tài)位設(shè)為無(wú)效
              valid = false
              setTimeout(() => {
                  fn.call(this,arguments);
                  valid = true;
              }, this.data.throttleTime)
          }
        }

        6.頁(yè)面滾動(dòng)事件處理

           onPageScroll:throttle(function(e){
            let scrollTop=e[0].scrollTop;//滾動(dòng)條高度
            let itemNum=Math.floor(scrollTop/this.data.itemPxHeight);//計(jì)算出可視區(qū)域的數(shù)據(jù)Index
            let clearindex=itemNum-this.data.prepareNum+1;//滑動(dòng)后需要渲染數(shù)據(jù)第一條的index
            let oldSrollTop=this.data.oldSrollTop;//滾動(dòng)前的scrotop,用于判斷滾動(dòng)的方向
            let aboveShowIndex=this.data.aboveShowIndex;//獲取已渲染數(shù)據(jù)第一條的index
            let listDataLen=this.data.listData.length;
            let changeData={}
          //向下滾動(dòng)
            if(scrollTop-oldSrollTop>0){
                if(clearindex>0){
                 //滾動(dòng)后需要變更的條數(shù)
                  for(let i=aboveShowIndex;i<clearindex;i++){   
                        changeData[[`listData[${i}].isDisplay`]]=false;
                        let belowShowIndex=i+2*this.data.prepareNum;
                        if(i+2*this.data.prepareNum<listDataLen){
                          changeData[[`listData[${belowShowIndex}].isDisplay`]]=true;
                         }
                  }   
                }    
            }else{//向上滾動(dòng)
                if(clearindex>=0){
                 let changeData={}
                 for(let i=aboveShowIndex-1;i>=clearindex;i--){
                   let belowShowIndex=i+2*this.data.prepareNum
                   if(i+2*this.data.prepareNum<=listDataLen-1){
                    changeData[[`listData[${belowShowIndex}].isDisplay`]]=false;
                   }
                   changeData[[`listData[${i}].isDisplay`]]=true;
                 }  
                }else{
                  if(aboveShowIndex>0){
                    for(let i=0;i<aboveShowIndex;i++){
                      this.setData({
                        [`listData[${i}].isDisplay`]:true,
                      })
                    }
                  }
                }      
            }
            clearindex=clearindex>0?clearindex:0
            if(clearindex>=0&&!(clearindex>0&&clearindex==this.data.aboveShowIndex)){
              changeData.aboveShowIndex=clearindex;
              let belowShowNum=this.data.listData.length-(2*this.data.prepareNum+clearindex)
              belowShowNum=belowShowNum>0?belowShowNum:0
              if(belowShowNum>=0){
                changeData.belowShowNum=belowShowNum
              }
              this.setData(changeData)
            }
            this.setData({
              oldSrollTop:scrollTop
            })
          }),

        經(jīng)過(guò)上面的處理后,頁(yè)面的wxml節(jié)點(diǎn)數(shù)量相對(duì)穩(wěn)定,可能因?yàn)榭梢晠^(qū)域數(shù)據(jù)的index計(jì)算誤差,頁(yè)面渲染的數(shù)據(jù)有小幅度的浮動(dòng),但是已經(jīng)完全不會(huì)超過(guò)小程序頁(yè)面的節(jié)點(diǎn)數(shù)量的限制。理論上100萬(wàn)條數(shù)據(jù)的列表也不會(huì)有問(wèn)題,只要你有耐心和精力一直劃列表加載這么多數(shù)據(jù)。

        7.待優(yōu)化事項(xiàng)

        • 列表每一行的高度需要固定,不然會(huì)導(dǎo)致可視區(qū)域數(shù)據(jù)的index的計(jì)算出現(xiàn)誤差
        • 渲染玩列表后往回來(lái)列表,如果手速過(guò)快,會(huì)導(dǎo)致above,below區(qū)域的數(shù)據(jù)渲染不過(guò)來(lái),會(huì)出現(xiàn)短暫的白屏,白屏問(wèn)題可以調(diào)整 prepareNum,throttleTime兩個(gè)參數(shù)改善,但是不能完全解決。
        • 如果列表中有圖片,above,below區(qū)域重新渲染時(shí),圖片雖然以經(jīng)緩存在本地,不需要重新去服務(wù)器請(qǐng)求,但是重新渲染還是需要時(shí)間,尤其當(dāng)你手速特別快時(shí)??梢愿鶕?jù)上面的思路,  isDisplay時(shí)只銷(xiāo)毀非<image>的節(jié)點(diǎn),這樣重新渲染就不需要渲染圖片,但是這樣節(jié)點(diǎn)數(shù)還是會(huì)增加,不過(guò)應(yīng)該能滿足大部分項(xiàng)目需求了,看自己項(xiàng)目怎么取舍。

        五.使用自定義組件和虛擬列表的對(duì)比。

        雖然不知道為什么,但是直覺(jué)告訴我使用自定義組件性能會(huì)相對(duì)差一點(diǎn)。為了對(duì)比兩種方法的優(yōu)劣,使用了Trace工具對(duì)一個(gè)5000條帶圖片數(shù)據(jù)進(jìn)行了性能測(cè)試。

        內(nèi)存占用對(duì)比:

        自定義組件內(nèi)存占用情況:

        圖七   自定義組件內(nèi)存占用情況

        虛擬列表內(nèi)存占用情況:

        圖八   虛擬列表內(nèi)存占用情況

        對(duì)比可以看出,因?yàn)榻M件在上拉加載時(shí),組件是沒(méi)有銷(xiāo)毀的,導(dǎo)致數(shù)據(jù)量逐漸增多。而虛擬列表在增加數(shù)據(jù)的同時(shí),也會(huì)銷(xiāo)毀相同數(shù)量的數(shù)據(jù),所以?xún)?nèi)存占比會(huì)穩(wěn)定在一個(gè)數(shù)量。具體到這個(gè)測(cè)試dome,5000條數(shù)據(jù)使用自定義組件,最后占用2000MB的內(nèi)存,而虛擬列表穩(wěn)定在700MB。

        setData后重新渲染所用的時(shí)間對(duì)比:

        自定義組件重新渲染耗時(shí):

        圖九   自定義組件重新渲染耗時(shí)

        虛擬列表重新渲染耗時(shí):

        圖十   虛擬列表重新渲染耗時(shí)

        從測(cè)試結(jié)果可以看出,無(wú)論是耗時(shí)的次數(shù)分布,還是最大耗時(shí),最小耗時(shí),虛擬列表都優(yōu)于自定義組件

        最后附上虛擬列表的github地址,如果對(duì)您有幫助,記得給個(gè)小星星哦

        https://github.com/lmn1919/wechatApp-dome/tree/main/pages/list-scroll-view






        如果覺(jué)得這篇文章還不錯(cuò)
        點(diǎn)擊下面卡片關(guān)注我
        來(lái)個(gè)【分享、點(diǎn)贊、在看】三連支持一下吧

           “分享、點(diǎn)贊、在看” 支持一波 

        瀏覽 25
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲精品人人| 91免费看| 成人黄色毛片| 国产激情视频在线| 久久久精品黄色网址| AV天堂免费播放| 成人免费A片| 免费一级无码婬片A片AAA毛片| 亚洲福利女神成人福利| 97人妻碰碰中文无码久热丝袜| 日韩在线1| 老司机在线免费视频| 国产女人水真多18毛片18精品| 午夜精品一区二区三区在线成人 | 成人做爰A片一区二区app | 波多野结衣久久中文字幕| 成人伊人综合| 狼友在线观看| 国产精品成人片| 欧美中文字幕| 国产精品日韩| 91探花秘入囗| 日韩欧美中文字幕公布| 五月婷色| 国产精品综合激情| 国产av福利| 91干穴穴在线观看| 日本特黄一级片| 91视频在线免费观看app | 欧美日韩一区二区三区在线电影| 青娱乐国产精品一区二区| 玖玖色视频| 麻豆91精品91久久久| 亚洲精品女人久久久| 丁香婷婷视频| 国产综合第一页| 激情性爱婷婷色五月| 五月亭亭在线视频| 大香蕉在线视频网| 极品美鮑20p| 水蜜桃91| 婷婷五月天在线观看| 无套内射在线免费观看| 成人H动漫精品一区二区无码| 国产av网站大全| AV在线免费观看网址| 亚洲AV成人片无码网站网蜜柚| 亚洲成人视频在线观看| 成人性生交大片免费看小芳| 亚洲精品国产精品国自产| 一本久久精品一区二区| www.狠狠| 国产18女人水真多免费看| 99精品999| 国产亚洲三级| 午夜免费视频1000| 午夜福利干B在线免费小视频 | 无码国产精品一区二区免费96 | 在线免费观看国产视频| 色综合999| 豆花视频logo| 青娱乐青青草| 亚洲无码一区二区三| 91丨九色丨国产在线| 成人亚洲电影| 五月天黄色电影| 高清无码一区二区在线| 国产亚洲天堂| 无码免费一区二区| www.久久网| 影音先锋色AV| 一本色道久久综合亚洲精品小说| 欧美性受XXXX黑人XYX性爽| 国产尤物在线观看| 久久精品99久久久久久| 亚洲黄色视频网站| 亚洲AV无码黑人专区| 91色秘乱码一区二区| 第一色影院| 加勒比久久久| 免费观看高清无码| 亚洲性爱自拍| 一级黄A片| 91亚洲国产成人久久精品麻豆| 熟女人妻人妻の视频| 麻豆91久久久| 亚洲日韩欧美成人| 成人性生活免费视频| 黄色免费福利视频| 中文字幕在线电影| 日本免费在线| 国产欧美综合在线观看| 欧美精品成人在线| 99热在线播放| 久久久波多野结衣| 午夜精品18| 亚洲俺去了| 免费无码婬片AAAA片老婦| 人人爽人人爽人人爽| 人人妻人人做| 黄色毛片一级| 草久美女| 特级西西人体444www高清大胆 | 天天日天天射天天操| 另类老妇性BBBWBBW| 国产乱伦免费视频| 五月婷婷五月天| 日韩欧美国产一区二区| 亚洲AV成人无码精品直播在线| 无套影院| 性无码一区二区三区在线观看| 精品在线播放| 免费在线观看AV片| 懂色av,蜜臀AV粉嫩av| 欧美日韩伊人| 精品成人无码| 日本肏逼视频| 97在线视频免费观看| 永井玛丽亚av无码中出流出| 久久蜜桃视频| 在线观看日韩| 日韩欧美国产综合| 波多野结衣一区| 蝌蚪窝在线视频免费观看| 影音先锋日韩资源| 成人一区二区三区四区五区| 成人无码三级| 九九色播| 欧一美一婬一伦一区二区三区黑人| 婷婷色片| 久久久久久久亚洲| 日日操天天操| 国产无码激情| 天天操夜夜操狠狠| 免费在线观看黄色| 亚洲成人a| 在线日韩视频| 亚洲群交视频| 成人三级电影| 免费网站观看www在线观| 麻豆精品视频| 亚欧洲精品在线视频| 国产av资源| 亚洲成人AV电影| 青草中文娱乐网在线| 一级片av| 亚洲AV无码成人精品区东京热| 北条麻妃在线视频聊天| a在线观看免费| 奇米狠狠操| 国产一级黄色A片| A片视频免费看| 日韩黄色激情| 99热最新网址| 伊人在线视频观看| 懂色一区二区三区免费| 国内成人AV| 狠狠操夜夜操| 日本无码一区二区三区| 久一久久| 伊人免费视频| 国产嫩草精品A88AV| 大香蕉美女视频| 亚洲一区二区三| 中文字幕精品一级A片| 黄色一级网站| 国产亚洲91| 国产麻豆精品ThePorn| 欧美日韩免费一区二区三区| 国产成人精品a视频一区| 五月丁香网站| 777视频在线观看| 国外操逼视频| 日韩激情在线| 久久精品视频9| 亚州黄色电影| 大香蕉人人| 777777国产7777777| 粉嫩一区二区三区四区| 性久久久久久| 蜜臀久久99精品久久久| 精品无码久久久久久久久app| 亚洲色图一区二区三区| 亚洲高清无码视频在线播放| 亚洲天媒在线播放| 欧美一级特黄A片免费| 潮喷AV| 18禁免费网站| 伊人中文在线| 在线中文字幕亚洲| 欧美91熟| 亚洲免费在线播放| 欧美久久免费| 亚洲成人动漫免费| 天堂无线av无码av| 无码人妻一区二区三区免费n鬼沢| 亚洲熟妇AV日韩熟妇在线| 99青草在线视频| 一区亚洲| 精品人伦一区二区三区| 大鸡吧成人视频| 插菊花综合网3| 日韩中文AV| 国产精品一级二级三级| 操逼视频国产| 色婷婷AV一区二区三区之e本道| 国精自拍| 一级黄色录相片| 在线观看禁无码精品| 成人中文字幕在线观看| 中文字幕在线无码视频| 成人性爱福利视频| 成人免费无码婬片在线观看免费 | 亚洲AV无码一区东京热久久| 中文字幕免费无码| 996热久久| 日日天天| 国产AV不卡| av777777| 亚洲AV人人夜夜澡人人| 97资源视频| 无码人妻AⅤ一区二区三区A片一| 一二三区视频| 俺来射| 亚洲操屄| 国产在线一二三| 日韩一区二区三区四区| 成人视频免费| 久草国产视频| 天堂网在线播放| 日韩欧美性爱视频| 久久成人18免费网站波多野结衣| 日韩人妻精品无码| 先锋影音AV资源网| 国产av一级片| 中文字幕在线观看视频免费| 丁香六月婷婷综合缴| 国产精品黑人ThePorn| 欧美国产日韩综合在线观看170| 久久草视频| 色婷婷在线观看视频| 天天干妹子| 国产超碰青青草| 天堂视频中文在线| 麻豆videos| 日韩在线观看免费| 神马午夜精品96| 翔田千里一区二区| 你懂的在线观看视频| 91狠狠色丁香婷婷综合久久精品 | a级网站| 日本理论片一道本| 人人摸人人看人人草| 天堂中文资源在线观看| 婚闹不堪入目A片| 色中文 | 亚洲第一黄片| 777超碰| 一区二区三区电影网| 一级a一级a免费观看免免黄‘/| 思思精品视频| 成年人性生活免费视频| 免费人成视频在线| 亚洲男女内射| 91香蕉视频在线看| 国产精品色呦呦| 成人黄色大香蕉| 国产清纯可爱美女自卫裸贷偷情 | 亚洲一区二区黄色电影视频网站| 大香蕉久久视频| 亚洲色图图片| 操逼高清无码| 成人H动漫精品一区二区三区蘑菇 高清无码视频在线免费观看 | 亚洲日本黄色视频| 亚洲成人无码在线播放| 俺来也在线视频| 亚洲男人天堂视频| 人人爱人人摸人人操| 丰满人妻一区二区三区四区54| 无码做爱视频| 无码视频在线免费播放| 人人操人人模| 亚洲无码高清在线视频| 中文字幕亚洲第一| 黄色操逼大片| 人人天天爽| 亚洲欧美日韩另类| av在线资源播放| 九九小视频| 99久久夜色精品国产亚洲| 日韩欧美人妻| 人人妻人人插| 日本中文字幕不卡| 无码欧洲| 国产精品美女视频| 巨爆乳肉感一区二区三区| 精品久久久国产| 亚洲乱码精品久久久久..| 翔田千里无码在线| 国产女人18毛片精品18水| 91精品人妻一区二| 黄片AAA| 五月天婷婷色| 天天澡天天爽日日AV| 字幕一区二区久久人妻网站| 丁香五月少妇| 一級免費网站| 欧美日韩在线观看一区二区三区| 天天干天天干天天操| 成人精品一区二区三区无码视频| 熟女人妻在线| A黄色视频| 亚洲日韩中文在线| 无码狠狠躁久久久久久久91| 黄片视频网站| 99精品免费视频| 狼友在线视频| 懂色成人Av| 大鸡吧操逼| 高清无码视频免费版本在线观看| 亚洲日韩欧美中在线| 黄色三级av| 久久久久无码精品国产91福利| www.黄色片| 亚洲视频播放| 国产精品123| 败火老熟女ThePorn视频| 国产人妖av| 久久色片| 欧洲亚洲免费视频| 国产AV一区二区三区精品| 国产超碰在线| 日韩黄色免费视频| 亚洲精品久久久久久久蜜桃| www.97av| 亚洲午夜在线观看| 91拍真实国产伦偷精品| 中文字幕高清| 免费看黄色录像| 一级黄色免费片| AV黄色网址| 午夜日逼| 天天爽夜夜爽精品成人免费| 国产3p露脸普通话对白| 亚洲成人无码精品| 欧美日韩免费一区二区三区| 91成人亚洲| 99久久婷婷国产综合精品青牛牛| 动漫av网站| Av黄色| 亚洲精品无码电影| 啪啪啪免费网站| 操操插插| 中文字幕AV第一页| 天天干天天日天天色| 精品操逼| 按摩性高湖婬AAA片A片中国| 六月激情丁香| 久久噜噜| 爽好紧别夹喷水无码| 少妇高潮一区二区三区99| 亚洲视频一区二区三区四区娇小视频在线观看视频 | 久热青草| 人人操操| 成人免费内射视频| 伊人成人片| 成人大香蕉网| 日韩成人视频在线观看| 一区无码视频| 狠狠狠狠狠狠狠狠| 无码视频一区二区三区| 国产午夜福利电影| 黄色视频免费| 在线观看黄视频| 国产精品成人午夜福利| 伊人成人网站| 亚洲中文字幕在线无码| 毛片毛片毛片毛片毛片| 香蕉福利视频| 欧洲精品在线免费观看| 国产黄色视频在线看| www.五月婷婷| 午夜福利av在线| 一区二区三区四区av| 亚洲黄色小视频| 亚洲午夜久久久久久久久久久| 无码人妻一区二区三区三| 猫咪AV大香蕉| 超碰麻豆| 无码一区二区三区免费看| 操极品少妇逼| 日韩激情无码一区二区| 男人午夜AV| 91精品久久久久久久久久久久| 欧美亚洲中文| 国产激情视频在线免费观看| 欧洲三级网观看| 美女肏| 久久国产黄色一级片| 激情另类视频| 国产一级a毛一级a毛视频在线网站| 大香蕉精品欧美色综合2025| 免费无码蜜臀在线观看| 国产精品无码专区| 亚洲国产成人精品激情在线| 亚洲免费观看高清完整版| 性BBwBBwBBwBBw禽| 精品国产一二三区| 亚洲色在线观看| 中文字幕免费在线看一区七区| 黄色A片免费| 在线播放JUY-925被丈夫上司侵犯的第7天 | 午夜无码鲁丝片午夜精品| 动漫一区二区| 欧美黄色免费看| 无码人妻丰满熟妇啪啪| 蜜桃Av噜噜一区二区三| 国产人国产视频成人免费观看… | 日韩欧美中文字幕公布| 大地影院在线资源观看| 五月丁香亚洲综合| 99热热久久| 国产AV久| 欧美AA视频| 黄色一区二区三区| 黄色永久免费| 色婷婷电影| 日韩第22页| 大香蕉网伊人| 亚洲成人动漫在线| 人妻无码久久| 欧美三级免费| 免费黄色视频网址| 麻豆91免费视频| 久久精品视频网站| 91乱伦| 天天日,天天干,天天操| 人人干人人看| 国产又爽又黄免费网站在| 蜜桃一区二区视频在线观看| 操逼视频网站免费| 波多野结衣视频网站| 另类欧美| 婷婷五月天AV| 欧美成人精品三级网站| 久久9热| 亚洲AV人人夜夜澡人人| 婷婷三区| 草逼动态图| 91香蕉视频在线| 日木毛片| 精品少妇3p| 黄片免费播放| 高清毛片AAAAAAAAA片| 国产欧美成人| 欧美性爱内射| 亚洲清高毛无码毛片| 色哟哟一区| 人人操操| 福利一区在线观看| 欧美色网| 欧美色视频一区二区三区在线观看| 狠狠干高清成人二区三区| 一级A片亲子乱中文| 午夜啪啪网站| 在线中文无码| 精品国产一| 日韩av在线免费观看| 97久久一区二区| 欲撸视频| 2025av天堂网| 亚洲精品在线观看免费| 啪啪免费网站| 伊人在线视频观看| 精品国产一区二区三区性色AV| 熟妇人妻丰满久久久久久久无码 | 你懂的在线播放| 无码免费在线观看视频| 久久肥妞操| 情侣av| 蜜芽视频| 一线天嫩穴少妇| 嫩BBB槡BBBB槡BBBB撒尿| 免费欧美成人网站| 天堂综合网| 波多野结衣一区二区三区在线观看| 色臀av| 亚洲天堂无码视频| 久久偷拍网| 欧美成人福利视频| 亚洲vs无码秘蜜桃少妇| 草草影院第一页| 青草在线视频| 黄色欧美视频| 婷婷国产AV| P站免费版-永久免费的福利视频平台 | 高潮免费视频| 日皮视频在线观看免费| 国产成人在线免费观看| 日日干综合| 日韩成人无码精品| 国产一卡二卡| 最近2021中文字幕免费| 日本在线一区| 日韩精品一区二区三区在线观看免费| 国产欧美在线观看| 男女做爱视频网站| 无码视频在线免费播放| 国产一区二区久久| 免费一级无码婬片A片APP直播| 亚洲三级片无码| 欧美日韩免费在线视频| 大香蕉国产精品| 国产亲子乱XXXXinin| 亚洲黄色Av| 成人网站视频在线免费观看| 热99| 精品久久成人| 不卡视频一区| 免费视频在线观看黄| 欧美性受XXXX黑人XYX性爽| 成人做爰黄AAA片免费直播岛国| 少妇搡BBBB搡BBB搡HD(| 日韩特黄片| 亚洲婷婷三级成人网| 91精品丝袜久久久久久久久久粉嫩 | 国产一级a一片成人AV| 日本少妇中文字幕| 强伦轩人妻一区二区三区最新版本更新内容 | www.青草视频| 黄色录像一级带| 成人超碰在线| 蜜桃精品在线观看| www.日本黄色视频| 欧美日韩国产成人综合| 狠狠操夜夜操| 亚洲色图狠狠撸| 五月天无码| 丰满熟妇| 骚逼黄片| 日韩精品无码AV| 日本久久不卡| 国产91一区在线精品| 三级片视频网站| 丁香五月婷婷色| 久久4| 人人澡超碰碰| 天天操夜夜干| 天堂AV无码AV| 成人亚洲精品一区二区三区| 欧美日韩有码视频网址大全| 性BBwBBwBBwBBw禽| 大香蕉网伊人| 色综合一区二区三区| 亚洲综合成人网| 亚洲午夜久久久久久久久| av老鸭窝| 毛片入口| 久草网大香蕉| 91成人在线| 欧美精产国品一二三区| 91精品一区二区| 久草福利在线视频| 一二区无码| 人人澡人人澡人人| 91九色91蝌蚪91成人| av在线资源播放| 成人亚洲综合| 翔田千里无码A片| 欧洲无码精品| 国产精品7777| 三级毛片网站| 国产一级a毛一级a做免费的视频| 99热热热| xxx国产精品| 99re99| 久久人人操| 成人精品无码| 无码视频免费| 国产操屄视频| 国产啊啊啊| 亚洲无线观看| 无码免费播放| 狼友视频在线观看| 尤物视频在线观看| 在线无码免费| 51福利视频| 中文字字幕在线中文乱码电影| 日韩综合一区| 小骚逼操死你| 黄色成人视频在线观看| 成人在线视频观看| 欧美成人毛片AAAAAA| 欧美日韩三级片| 黄片www| 黄网站在线观看| 亚洲精品91| 天堂在线社区| 亚洲色在线视频| 午夜无码鲁丝片午夜精品一区二区 | 777免费观看成人电影视频| 猫咪视频大全视频| 无码av无码AV| 免费的黄色录像| A级视频网| 成人五月天黄色电影| 三级无码视频在线观看| 国产精品无码不卡| 伊大香蕉在线| 国产白嫩精品久久久久久| 亚洲AV无码成人精品区www| 蝌蚪窝在线视频免费观看| 国产成人777777精品综合| 亚洲黄色一级电影| 免费国产黄色视频| 综合久久中文字幕| 一区二区三区视频在线| 亚洲成人性爱网站| 波多野结衣成人在线| 影音先锋天堂| 97无码| 欧美色视频网| 色色在线观看| 婷婷中文字幕亚洲| 天天精品视频| 俺去也在线视频| 亚洲AV无码久久精品色无码蜜桃| 久久黄色网址| 影音先锋aV成人无码电影| 久久99久久99久久| 少妇人妻一级A毛片| 一本无码中文字幕| 亚洲国产成人综合| 97在线观看视频| 亚洲欧美在线综合| 羞羞AV| 六月婷婷在线| 亚洲大片在线观看| 久久一区二区三区四区五区| 国产日韩欧美一区二区| av不卡在线| 日本一级一片免费视频| 成人性在线| 日韩性爱在线视频| 亚洲少妇无码| 熟练中出-波多野结衣| 黄网在线看| 久久久桃色| 成人国产片| 日本亚洲国产| 水蜜桃视频在线| 欧美熟妇精品黑人巨大一二三区| www.麻豆网91成人久久久| 久久中文字幕综合| 中日韩黄色视频| 欧美囗交大荫蒂免费| 国产婷婷色一区二区三区| 久久久久久网站| a在线观看免费| 北条麻妃久久久| 东京热无码一区| 青青艹在线视频| a在线观看| 视频國产在线| 日韩啪啪啪网站| 日韩精品中文字幕无码| 波多野结衣AV无码| 成人影片亚洲| 午夜成人网站在线观看| 天天添| 一区二区三区在线观看视频| 秋霞无码一区二区三区| 欧美午夜性爱视频| 内射视频免费观看| 亚洲一级二级三级| 澳门午夜黄色在线| 大香蕉尹人在线观看| 天天艹夜夜艹| 北条麻妃无码精品AV怎么看| 在线观看日本黄| 影音先锋成人片| 大香蕉人妻| 日韩在线高清视频| 囯产一级a一级a免费视频| 在线午夜福利| 德美日三级片在线观看| 日韩国产传媒| 丁香五月欧美激情| 国内夫妻【20p】| 熟妇偷拍| av在线直播| 高清无码在线免费观看| 激情日韩| 亚洲激情黄色| 躁BBB躁BBB躁BBBBBB日| 在线观看无码高清视频| 无码成人av| 美女性爱3P视频| 亚洲无码精品专区| 五月天黄色小说| 免费AV播放| 波多野结衣无码AV| 国产成人在线播放| 2021天天夜日| 青青艹在线视频| 三级无码AV| 日韩欧美国产精品综合嫩V| 国产精品天天干| 国精品无码一区二区三区在线秋菊| 欧美日韩国产中文字幕| 日本久久久久久久久视频在线观看| 永久在线| 大香蕉网视频| 久热中文在线观看精品视频| 日韩高清在线播放| 久久R5| 日本黄色电影在线观看| 亚洲小视频在线观看| 色婷婷AV在线观看| 国产迷奸视频| 青榴视频免费观看| 国产迷奸在线| 色逼视频| 屁屁影院CCYYCOM发布地| 亚洲视频免费完整版在线播放| 亚洲国产精品成人网站| 日韩亚洲天堂| 短发妹子双人啪啪秀| 国产美女在线播放| 玩弄小怮女在线观看| 夜夜骑天天| 久久精品福利视频| 青青草在线观看视频| 五月丁香中文字幕| 亚洲永久天堂| 国产成人A| 91精品91久久久中77777| 先锋影音麻豆| 国产美女做爱| 色婷婷在线免费视频| 亚洲激情成人| 无码精品久久| 日本一本视频| 在线免费毛片| 国产精品系列视频| 国产足交| 五月黄片| 婷婷一区二区三区| 欧美性爱AAA| 丁香五月激情视频| 免费高清无码| 日韩精品成人| 精产国品一区二区三区| 天天天天干| www.91AV| 久久国产黄色一级片| 国产一区二区三区在线观看免费视频免费视频免费视频 | 黄色操逼| 日韩在线1| 一级日逼片| 日韩在线观看免| 成人做爰A片一区二区app| 亚洲欧美v在线视频| 蜜桃视频| 丁香婷婷激情五月| 秋霞日韩| 91人人妻人人澡人人爽| 最近中文字幕中文翻译歌词| 无码专区一区二区三区| 少妇精品久久久久久久久久| 亚洲色图狠狠撸| 日韩精品一区二区三区中文在线| 精品无码在线观看视频| 久久女人视频| 国产亚洲99久久精品熟女| 日本无码一区二区三三| 97国产精品人人爽人人做| 人人操夜夜| 久久一级视频| 久久午夜无码人妻精品蜜桃冫| 在线观看免费黄色视频| 国产成人视频免费| 亚洲jiZZjiZZ日本少妇| 夜夜操夜夜爽| 日本精品黄色| 亚洲欧美日韩无码| 国产无码成人免费| 在线99热| 国产乱伦片、| 国产一卡二卡三卡| 人妻精品免费| 国产乱婬片视频| 欧美一级片在线| 亚洲成人电影无码| 亚洲AV无码一区二区三区少妇| 成片免费观看视频大全| 成人在线网址| 91香蕉在线观看视频在线播放| 亚洲AV电影网| 成人亚洲欧美| 久久伊人在线| 西西888WWW大胆无码| 99久久精品国产一区二区成人| 天天干狠狠| 亚洲人成电影| 美女久久久| 超碰天堂| 三级黄色小视频| 天天干天天添| www.热久久| 国产婬片lA片www777| 巨い巨乳の少妇あジed2k | 久久久五月| 俺也色俺也干| www.啪啪| 午夜成人无码| 国产在线色| 国产黄色直播| 男人色天堂| 成人激情五月天| 欧美久久久久久| 亚洲精品美女视频| 女女女女女女BBBBBB手| 中文字幕乱伦性爱| 成人三级电影| 日本无码一区二区三区| 中文字幕高清在线| 强伦轩人妻一区二区三区四区| 91精品午夜少妇| 亚洲性夜夜天天天天天天| 九九热在线观看| 亚洲成人第一页| 天堂网av2014| 少妇人妻精品| 国产成人视频在线播放| 色天堂在线观看| 欧美日韩在线一区| 9l视频自拍蝌蚪9l成人| 一级黄色电影免费在线观看| 青草午夜| 日韩在线视频免费观看| 欧美一级婬片A片免费软件| 精品aaa| 国产资源AV| 日韩AⅤ无码一区二区三区| 九九九成人视频| 北条麻妃在线无码| 国产无码激情| 暖暖在线视频| a片免费在线| 成人黄色免费在线| 日韩无码一卡二卡| 日本高清视频www| 成年人在线观看视频| 苍井空无码| 九色PORNY国产成人| 色色色热热热| 日韩在线视频免费播放| 国产69精品久久| 偷自拍| 婷婷中文| 久久A√一区二区| footjobvk| 国产黄色视频网站| 操b视频网站| 激情乱伦五月天| 美女网站在线观看| 九九久久综合| 亚洲第一黄片| 欧美精品亚洲| 欧美一级日韩| 成人69AV| www.jiujiujiu| 99国产精品久久久久久久| 国产a一级a毛一级视频| 亚洲va在线∨a天堂va欧美va| 国产精品视频在线观看| av无码aV天天aV天天爽| 日本一区二区在线| 五月天婷婷在线观看| 91夫妻视频| 蜜桃av在线播放| 五月婷婷六月天| 亚洲免费小视频| 日韩人妻精品无码| 91亚洲一线产区二线产区| 日本欧美在线观看| 蜜臀av一区二区| 国产三级在线观看视频| 欧美日韩中文| 欧美成人超碰| 波多野结衣av中文字幕| 69国产精品成人无码视频色| 99久久精品国产一区二区成人| 日韩视频中文| 欧美日韩亚洲视频| 亚洲中文字幕不卡| 亚洲成人娱乐网| 婷婷五月一区| 91内射视频|