精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

得物App白屏優化系列|圖片庫篇

開發 架構
本文簡要介紹了在白屏監控能力建設過程中,圖片庫在編解碼流程、緩存讀取策略、視圖渲染加載等階段所做的一些優化。

一、背景

圖片加載作為重中之重的App體驗指標,端側的白屏問題則是其中最為嚴重的問題之一。想象一下如果你在瀏覽交易商品、社區帖子等核心場景下,圖片無法完成加載是多么糟糕的體驗,線上過往也陸續有一些白屏的用戶反饋。 

客戶端架構側從用戶白屏問題反饋出發,深入分析每一個用戶的實際情況,從0到1完成了白屏體系監控建設,借助獨立搭建的白屏分析平臺能力,從圖片庫、網絡庫、CDN質量等3個維度進行了專項治理優化。本文重點帶你了解得物圖片庫是如何完成白屏精細化監控的基礎能力、問題定位、治理優化,實現線上用戶白屏問圖片庫相關Issue反饋基本清零。

二、白屏監控體系

眾所周知,圖片加載全鏈路是橫跨圖片庫、網絡庫、多云CDN質量等核心基建的長鏈路過程。故白屏監控體系建設也是基于以上3個維度進行同步展開,實現白屏各類歸因問題的點對點跟進,以下為當前得物側在平臺歸因、端側監控能力建設、端側問題治理上的一些實踐匯總。

平臺歸因問題平臺歸因問題

全局監控能力建設全局監控能力建設

端側優化手段端側優化手段

三、圖片庫監控能力

圖片庫作為圖片請求的起始發起者 & 圖片加載的最終使用者,是唯一一個可以監控、匯總完整鏈路數據的承載者。而得物當前的白屏監控也是基于圖片加載流程深度剖析,形成了多圖、單圖的加載白屏監控能力,將白屏問題拆解到多個細分子階段,輸出結構化的分析日志,最終打通到平臺側進行問題聚合分析。

圖片圖片

多圖監控

定義為屏幕上10秒內有7張圖未走完圖片庫的完整流程,則觸發多圖監控上報。

基于Fresco的producer(階段信息)、reqeust(請求信息)、submit(加載信息)回調能力封裝,我們記錄了每一張圖片階段開始、結束、失敗、取消等詳細時間信息、額外圖片參數信息等到內存Map中備用。

通過Handler消息循環模型,每秒發送1個探測消息,對加載成功、離開屏幕、內存緩存復用等無關場景進行剔除過濾,達到監控手機屏幕上失敗請求、加載中請求的目的,觸發到我們10s 7圖的閾值后則進行所有圖片信息的聚合上報,可以清晰直觀的知道圖片加載阻塞的卡點、失敗的原因。

圖片圖片

圖片核心信息記錄:

圖片圖片

  • Producer信息中記錄圖片經歷所有任務處理階段:  線程切換、內存緩存、磁盤緩存、網絡請求、編解碼等。
  • Request信息中記錄了圖片開始請求、取消、失敗的核心時間節點。
  • Submit信息中記錄了圖片上屏、完成加載、離開屏幕等核心時間節點。
  • PixelCopy信息記錄了最近一次屏幕的截屏信息,可以較為真實反應當前屏上圖片的時機情況,同時平臺對此進行了像素點的分析,本篇重點介紹圖片庫相關的監控能力,在此不做過多的闡述。

以下為聚合格式化后圖片加載的本地日志與平臺實例參考,可以直接了當的知道圖片是由于網絡階段導致的白屏。

pixelCopy像素圖pixelCopy像素圖


圖片圖片

producer時序信息producer時序信息

單圖慢加載監控

定義為單張圖3s內未走完除網絡外的子階段、10s未完成完整階段,則觸發單圖慢加載上報。

單圖監控的邏輯相對簡單,當圖片加載狀態變化時,基于圖片庫ImagePerfData的信息回調進行數據整合。

  • 記錄當前圖片加載階段、狀態、線程、耗時、單圖信息、配置信息等,仍舊通過handler消息循環每1s發送一個探測消息,確認屏上圖片是否觸發慢加載。

圖片圖片

大盤采樣監控

等待圖片完整加載階段(成功、失?。┖蠡谟脩舨蓸用?,將圖片加載信息記錄上報,以衡量圖片全局加載質量。

圖片大盤采樣監控實現邏輯與多單圖原理類似,此處主要介紹一些大盤核心元信息。

圖片圖片

四、圖片庫優化治理

基于圖片庫基礎監控、白屏監控平臺的建設以及線上用戶的反饋,我們發現了各種bad case導致端側白屏現象,并對其進行了精細化的點對點分析,包括圖片、網絡、CDN質量三大環節,其中66%為網絡問題,4.5%為圖片問題,1.3%為CDN問題。

本篇重點介紹圖片庫問題相關的治理優化。

圖片圖片

系統解碼優化

來看一個有意思的bad case,在線下bvt體驗過程中,我們發現在頻繁刷新得物Tab的情況下,會出現端上圖片均無法加載的極端情況。查看本地日志發現,圖片庫的階段日志均停留在DecodeProducer解碼階段。


圖片圖片

通過本地多圖監控日志可以看到,解碼線程池任務已經提交,但實際解碼處理并沒有執行,說明解碼線程池的當前執行任務出了問題。

由于是線下問題,debug發現極個別圖片由于包含iccData數據,按現有邏輯會執行到系統解碼流程中。而在對應設備上(尤其是android 8.1.0)系統頻繁進行Heif解碼,整個解碼流程可能會變得極其緩慢。我們查看線程堆棧發現執行任務會直接Block在BitmapFactory.nativeDecodeStream方法中,導致解碼線程池長時間阻塞,最終引起頁面白屏。

圖片圖片

  • iccData數據: 圖片的顏色配置信息,告知端上渲染時的色彩特性。

現有LibHeif & 三方Heif解碼庫 均無法有效處理對應icc數據段,會導致個別圖片存在一定程度的色差問題。

優化方案:

調整解碼流程,忽略iccData數據可能會導致的色差問題,將所有的解碼任務均托管到解碼庫執行。

圖片圖片

收益:

新版本系統慢解碼(尤其android 8.1.0)導致的白屏未再出現。

圖片請求優先級改造

為了提高屏上圖片加載速度,得物側使用了圖片預加載能力。在過往的預加載、上屏請求管理中,使用的是Fresco PriorityNetworkFetcher來處理預加載與上屏請求的優先級,所有的圖片請求共享一個最大并發數為12的網絡請求隊列,這在實踐中我們發現了大量由于A域名不同,導致B域名請求無法成功導致的白屏。

圖片圖片

基于得物當前是多CDN、預加載&上屏請求互相轉換 的請求現狀,存在以下問題:

  • 多域名請求間的競爭問題,A域名不通會導致并發隊列被打滿,B域名網絡正常但請求始終處在等待入隊狀態。
  • 預加載進入請求隊列后,在弱網等狀態下并不能為上屏請求讓步,擠占了一部分的運行時請求隊列空間。
  • 預加載的請求會無上限堆積,快速滑動場景可能出現由于持續存在屏上圖片加載,預加載請求會堆積到200-300+,但實際并沒有有效利用到預加載轉化后的Bitmap,浪費了帶寬 & 流量。

優化方案:

去除圖片庫的優先級隊列限制,統一交由網絡庫管理收口。

  • 實現按域名拆解host請求,充分利用網絡庫的現有能力,打破域名間競爭。
  • 支持預加載、離屏的"請求取消"能力 & 圖片庫上離屏標記、請求狀態轉換。

圖片圖片

收益:

  • 端側圖片庫的請求平均排隊耗時降 88%,圖片請求全鏈路降低 50%。
  • 解決CDN單通導致的白屏問題,線上CDN單通異常數量呈下降趨勢。

動圖渲染幀處理重構

得物歷史對動圖渲染幀的準備、加載流程,不同于Fresco原生For循環實現,自定義實現了利用Handler消息調度來分發、準備渲染幀。

問題發現

利用自研的白屏平臺監控能力,聚合分析了圖片慢解碼導致白屏的Issue,發現有一類case用戶會出現解碼任務始終不完成的情況,出現概率大概在萬分之二。我們對解碼流程監控進行了增強處理,進行線程池監控,記錄解碼線程的運行數量、id、等待隊列數量等信息附帶在多圖監控的白屏上報中。

圖片圖片

圖片圖片

可以看到,解碼線程池并發數8已經被打滿,但等待隊列中囤積的解碼圖片數量有1200+。

白屏問題轉化為了監控解碼線程池運行中的任務究竟在干什么,有了之前系統解碼的分析經驗,我們如果直接將白屏問題當做一個Crash問題來分析呢?那么很自然地會想到去查看堆棧,只要dump運行時中的線程池id所對應的堆棧即可。

圖片圖片

最終通過堆棧結合代碼分析確認是由于動圖幀渲染的countDownLatch鎖在極端case下無法釋放,線程池逐步被打滿導致的等待隊列解碼任務無法得到執行造成的白屏,而背景恰好是對應版本的動圖下發數量明顯上漲導致此類case逐漸暴露,與我們的結論能夠吻合。

圖片圖片

優化方案

歷史代碼存在以下幾個問題:

  • 單幀Bitmap毫秒級的準備處理周期內,在View OnPause情況下未完成便退出,會導致當前線程鎖無法釋放。
  • countDownLatch的鎖邏輯可通過回調的方式代替。
  • 線程池復用解碼線程池,導致動圖加載邏輯異常會影響到所有圖片。

圖片圖片

圖片圖片

優化后:對動圖幀渲染邏輯進行去鎖改造,采用callBack回調方式進行動圖幀分發處理,同時對解碼線程池進行隔離處理。

圖片圖片

收益:

App新版本動圖閉鎖邏輯導致的白屏歸因數量從原有1000+實現清零。

磁盤全局鎖優化

圖片庫的磁盤設計基于Fresco原生實現,支持大小緩存,但讀、寫、刪、遍歷操作同時共用Object Lock對象鎖,且過往由于業務需要獲取緩存文件的能力,圖片庫暴露了getCacheFile的API給到上層使用。

圖片圖片

白屏平臺發現存在磁盤讀寫超時導致的圖片白屏。通過對DiskProducer的深入代碼分析,我們將問題鎖定在了圖片庫存在大量本地磁盤文件的情況下,由于Fresco原生邏輯每隔30min要進行磁盤IO遍歷更新圖片庫當前磁盤緩存大小,可能會導致長時間持有對象鎖,最終引起圖片加載流程持續等待遍歷完成的白屏。

圖片圖片

優化方案

磁盤遍歷是Fresco的磁盤緩存模型中唯一潛在的長耗時點。 

由于此操作的調用頻率極低(30min一次),我們嘗試針對IO遍歷進行標記,并調整了原有主線程獲取磁盤緩存文件 & Fresco原生磁盤緩存查找的邏輯,對于在緩存遍歷期間磁盤數量超過指定閾值的緩存讀取操作進行適當忽略。

當然終極優化方案是降低磁盤緩存模型的鎖粒度,將全局的對象鎖降至單文件級別,但對現有的磁盤緩存設計改動過大暫時未上線。

圖片圖片

收益:

新版本磁盤鎖導致的主線程卡頓清零 & 磁盤鎖導致的圖片加載長耗時降低50% 。

元信息讀取適配 

部分設備上Heif圖編碼時獲取圖片metadata寬高元信息失敗,導致無法完成正常解碼、resize裁剪等操作,最終形成圖片加載白屏。

我們先來看下圖片庫歷史編碼流程環節,在網絡請求完成后,會通過BitmapFactory進行圖片metadata信息,獲取期望的寬高數據。在歷史邏輯中,我們只單獨處理了webp圖片寬高讀取,Heif圖等其他格式仍舊采用系統兜底實現,但實際針對加載失敗的原圖分析后,我們發現andorid系統BitmapFactory的解析邏輯對Heif圖片的支持并不友好,會存在獲取失敗的bad case。

final Pair<Integer, Integer> dimensions;
if (DefaultImageFormats.isWebpFormat(imageFormat)) {
  //webp圖片單獨處理  
  dimensions = readWebPImageSize();
} else {
  //系統兜底實現  
  dimensions = readImageMetaData().getDimensions();
}

故我們需要重Heif圖的寬高元信息獲取邏輯,實際獲取邏輯在三方SDK或者libHeif開源庫在native層完成了封裝,Fresco上層走調用結構解析,分別對應寬度、高度、旋轉角度、旋轉方向、是否動圖等,同時在獲取解析結果異常的情況下,我們仍舊以系統BitmapFactory進行流解析兜底。

final Pair<Integer, Integer> dimensions;
if (imageFormat.getName().equals(DefaultImageFormats.HEIFC.getName())) {
  //部分設備的 系統實現讀取很慢且無法解析
  dimensions = readHeifFormatImageSizeForSimple(imageFormat);
} else if (DefaultImageFormats.isWebpFormat(imageFormat)) {
  dimensions = readWebPImageSize();
} else {
  dimensions = readImageMetaData().getDimensions();
}




//寬高、旋轉方向、是否為多幀hefi動圖等信息
try {
  int[] parseResult = imageFormat.readHeifFormatImageSizeForSimple(inputStream);
  if (parseResult != null) {
    this.mWidth = parseResult[0];
    this.mHeight = parseResult[1];
    this.mRotationAngle = JfifUtil.transformFromClockWiseToAntiClockWise(parseResult[2]);
    this.mExifOrientation = JfifUtil.getExifOrientationFromAutoRotateAngle(this.mRotationAngle);
    int isSequence = parseResult[3];
    if (isSequence == 0) {
      this.mImageFormat = imageFormat.getHeifFormatAnimated();
    }
  } else {
    //系統實現異常兜底  
    return readImageMetaData().getDimensions();
  }
} catch (Exception e) {
  e.printStackTrace();
} finally {
  try {
    inputStream.close();
  } catch (IOException ignored) {
  }
}

異常加載圖截屏異常加載圖截屏

開源libHeif的內部實現開源libHeif的內部實現

三方Heif的jni實現三方Heif的jni實現

至此,個別問題設備的Heif慢加載、無法加載問題得到了有效解決。

收益:

個別Rom設備dimension(圖片寬高)無法解析的異常上報基本清零,新版本該類型的白屏、慢加載從800+降至0。

內存觸頂降級優化

除了大面積白屏外,內存不足導致的圖片加載失敗也是一個常見問題。

動圖降級

Fresco原生提供了PoolStatsTracker類來監控在分配內存過程中是否觸發到緩存池定義的內存上限,定義了當前緩存池的使用量,以及onHardCapReached的觸頂回調。而我們當前則是在回調中,進行一次主動GC來保證系統回收未持有引用的bitmap & 其他內存,同時標記規定間隔內(如1min內)限制大動圖的內存分配,將其強制轉為靜圖。

圖片圖片

圖片圖片

低內存 & 低磁盤緩存清理

基于application ComponentCallbacks2的低內存回調進行磁盤&內存緩存清理。

override fun onLowMemory() {
    val imagePipeline = Fresco.getImagePipelineFactory().imagePipeline
    imagePipeline.config.executorSupplier.forBackgroundTasks().execute {
        if (DuImageGlobalConfig.isDiskNervous) {
            imagePipeline.clearDiskCaches()
        }
        imagePipeline.clearMemoryCaches()
    }
}


override fun onTrimMemory(level: Int) {
    val imagePipeline = Fresco.getImagePipelineFactory().imagePipeline
    imagePipeline.config.executorSupplier.forBackgroundTasks().execute {
        if (level >= ComponentCallbacks2.TRIM_MEMORY_BACKGROUND) {
            if (DuImageGlobalConfig.isDiskNervous) {
                imagePipeline.clearDiskCaches()
            }
        }
        if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
            imagePipeline.clearMemoryCaches()
        }
    }
}

其他內存優化手段

關于圖片內存得物還做了很多優化,但非觸頂場景下往往不會直接導致白屏,在此可以關注后續技術博客,如:

  • 三級緩存閾值配置分檔
  • Android8以下bitmap內存轉移到Native層
  • 大動圖、大靜圖治理
  • 圖片Resize兜底裁剪、云端分級裁剪
  • BitmapConfig低端機降級
  • ....

主線程慢消息治理

在白屏平臺監控中,還發現一類圖片庫已經完成onFinalImageSet回調,但最終pixelCopy的像素圖展示為白屏的情況。我們先來了解一下原有的圖片加載流程,根據流程可知我們已經調用了圖片setImage設置,懷疑是頁面慢渲染導致的白屏。

圖片圖片

//圖片庫完成所有producer處理流程后的回調
private void onNewResultInternal(
    String id,
    DataSource<T> dataSource,
    @Nullable T image,
    float progress,
    boolean isFinished,
    boolean wasImmediate,
    boolean deliverTempResult) {
  //....
      if (isFinished) {
        logMessageAndImage("set_final_result @ onNewResult", image);
        mDataSource = null;
        if (mSettableDraweeHierarchy != null){
            mSettableDraweeHierarchy.setImage(drawable, 1f, wasImmediate); //setImage調用
        }
        reportSuccess(id, image, dataSource);   //上報圖片完成屏上設置,即onFinalImageSet完成
      }
   //....   
 }

白屏問題隨即轉化為卡頓問題,分析卡頓問題的利器則是APM火焰圖能力,故我們對"圖片加載完成"但仍舊白屏的case進行火焰圖的聚合上報。發現主線程的確存在長耗時消息,問題最終轉化為了主線程的慢消息治理,以下列舉一下我們已經發現并實際解決的問題。

圖片圖片

  • 頁面未接入X2c導致inflate耗時
  • GetCacheFile的主線程調用耗時
  • Sp的主線程強制寫文件
  • LoadSo成功后的字體文件主線程直接加載
  • 主線程查詢native視頻緩存
  • ....

收益:

主線程慢消息導致圖片View慢渲染白屏下降80%。

五、總結

白屏問題作為長鏈路綜合型問題,往往問題都是萬分之幾的出現概率,這意味著線下想要復現排查問題的難度極大,所以如何有效分析歸因解決白屏問題對我們來說是不小的挑戰。

在歷史監控能力缺失無法有效歸因的背景下,我們通過線上白屏用戶的問題分析,一步步完善端側白屏全鏈路的日志能力,逐步摸索建立起基于端側圖片、網絡、CDN信息的白屏監控平臺,實現:

  • 白屏問題的線上反饋歸因率達到100%,無不明確或猜測的歸因;
  • 白屏問題的分析時效從無法分析到2-3小時級別,到現有的5-10min內;
  • 白屏問題線上反饋從歷史單月7~10例反饋,到截止目前2個月以來線上0反饋。

本文簡要介紹了在白屏監控能力建設過程中,圖片庫在編解碼流程、緩存讀取策略、視圖渲染加載等階段所做的一些優化。但白屏問題的治理遠遠不局限于圖片庫本身,后續會陸續為大家介紹我們在網絡優化、CDN質量監控、白屏平臺打磨等環節所落地的實踐。

責任編輯:武曉燕 來源: 得物技術
相關推薦

2024-09-03 16:09:59

2023-08-30 18:49:05

2023-05-10 18:34:49

推薦價格體驗優化UV

2025-04-02 02:10:00

2022-11-14 14:53:14

架構技術編輯工具

2023-07-19 22:17:21

Android資源優化

2021-07-05 14:55:28

前端優化圖片

2025-07-31 00:00:25

2023-05-19 18:35:37

2023-05-15 18:33:09

得物前端巡檢

2025-11-11 01:55:00

2023-03-30 18:39:36

2021-10-09 20:18:31

Android

2022-12-12 18:56:04

2022-12-05 19:15:12

得物云原生全鏈路

2023-10-09 18:35:37

得物Redis架構

2025-03-13 06:48:22

2023-08-21 19:37:21

得物DGraph引擎

2023-04-28 18:37:38

直播低延遲探索

2012-05-02 14:46:42

Win7
點贊
收藏

51CTO技術棧公眾號

日韩午夜在线播放| 日韩一区中文字幕| 国产成人一区二区三区小说| 成人性生交大免费看| 日韩有码欧美| 黄色精品一区二区| 中文字幕一区二区三区5566| 亚洲国产精品久久人人爱潘金莲| 免播放器亚洲| 久久夜色撩人精品| 一区二区不卡免费视频| 欧美二区观看| 欧美网站大全在线观看| 800av在线免费观看| 国产精品久久一区二区三区不卡| 国内一区二区在线| 国产成人午夜视频网址| 久久网中文字幕| 日韩伦理视频| 日韩精品免费综合视频在线播放| 色婷婷激情视频| 第四色男人最爱上成人网| 一个色妞综合视频在线观看| 日韩啊v在线| 亚洲 欧美 自拍偷拍| 看电视剧不卡顿的网站| 欧美最近摘花xxxx摘花| 九九热国产在线| 99精品视频在线| 亚洲深夜福利网站| 久久福利小视频| 免费欧美网站| 91精品国产综合久久福利软件| 亚洲午夜精品久久久久久人妖| 91精品久久久| 成人欧美一区二区三区黑人麻豆| 欧美日韩免费精品| 亚洲欧洲国产综合| aaa亚洲精品一二三区| 国产精品初高中精品久久| 国产美女精品视频国产| 老汉av免费一区二区三区| 国产精品欧美久久久| 天堂网中文字幕| 亚洲在线黄色| 91精品国产乱码久久久久久久久| 青草草在线视频| 中文字幕一区二区三三| 日韩三级影视基地| 网爆门在线观看| 久久美女视频| 日韩在线免费视频| 亚洲不卡在线播放| 自产国语精品视频| 欧美老少做受xxxx高潮| 免费中文字幕视频| 国产一在线精品一区在线观看| 久久最新资源网| 日韩一区二区三区四区在线| 欧美在线资源| 欧美裸身视频免费观看| 黄色一级片在线| 亚洲黄色免费| 日产精品久久久一区二区福利| 久久精品国产成人av| 久久久久久一区二区| 国产不卡av在线免费观看| 国产亚洲欧美日韩高清| 日本午夜一区二区| 成人激情在线观看| 午夜老司机福利| 成人av电影免费在线播放| 久久超碰亚洲| 91xxx在线观看| 亚洲色图20p| www.日本少妇| 欧美舌奴丨vk视频| 欧美精品精品一区| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 九九在线观看视频| 亚洲理伦在线| 国产精国产精品| 国产精品人人爽| 成人黄色在线看| 免费观看成人高| 91xxx在线观看| 亚洲精品老司机| 春日野结衣av| 91精品国产自产观看在线| 精品日产卡一卡二卡麻豆| www.免费av| 欧美a级成人淫片免费看| 欧美精品久久久久| 中文字幕永久在线视频| 国产精品18久久久| 欧洲精品久久| 欧美xxxx性xxxxx高清| 色综合网色综合| 日韩精品视频网址| 久久av影视| 欧美高清视频免费观看| 不卡av电影在线| 国产99久久久国产精品免费看| 青青成人在线| 国产后进白嫩翘臀在线观看视频| 91久久精品一区二区三| 麻豆av免费看| 我不卡影院28| 国产精品黄视频| 黄色福利在线观看| 中文子幕无线码一区tr| 国产精品无码av在线播放| 国产精品第一| 亚洲男人天堂网站| 国产精品不卡av| 国产一区激情在线| 视频一区二区三| 在线天堂资源| 欧美r级在线观看| 黄色录像免费观看| 奇米777欧美一区二区| 国外成人在线视频网站| а√天堂资源地址在线下载| 一本大道av一区二区在线播放 | 国产字幕在线观看| 成人av在线网站| 欧美日韩激情四射| 99综合99| 久久精品电影网站| 波多野结衣在线观看一区| 99re8在线精品视频免费播放| 99视频精品全部免费看| 高清国产一区二区三区四区五区| 在线免费看av不卡| 在线永久看片免费的视频| 91欧美一区二区| 成年人午夜视频在线观看| 草草视频在线一区二区| 欧美韩国理论所午夜片917电影| 91国内精品视频| 中文乱码免费一区二区| 国产嫩草在线观看| 日韩免费视频| 成人免费观看a| 美女羞羞视频在线观看| 欧美三级日本三级少妇99| 日本一道本视频| 免费在线观看日韩欧美| 亚洲欧洲免费无码| 羞羞视频在线观看一区二区| 日韩视频免费在线观看| 97久久人国产精品婷婷| 自拍偷在线精品自拍偷无码专区| 午夜剧场在线免费观看| 99久久精品费精品国产风间由美| 91精品久久久久久综合乱菊| 日本中文字幕电影在线免费观看| 欧美日韩国产在线观看| 永久免费看mv网站入口| 国产精品综合一区二区三区| 丰满人妻一区二区三区53号| 超碰97久久国产精品牛牛| 91高清在线免费观看| 日本国产在线| 精品视频一区二区不卡| 国产午夜手机精彩视频| 国产超碰在线一区| 日韩欧美国产综合在线| 国产成人调教视频在线观看 | 国产成人免费av一区二区午夜| 三级精品视频久久久久| 国产情侣激情自拍| 亚洲国产成人av网| 精品无码一区二区三区| 人禽交欧美网站| 99中文字幕在线观看| 97久久综合精品久久久综合| 欧美在线亚洲在线| 97电影在线观看| 日韩一区二区免费视频| 在线看成人av| 日本一二三不卡| 999热精品视频| 日韩午夜电影| 午夜精品一区二区三区在线观看| 久久久加勒比| 欧美激情亚洲国产| 国产在线视频网址| 7799精品视频| 亚洲第一精品在线观看| 国产精品私人影院| 国产人妻精品午夜福利免费| 噜噜噜91成人网| 黄色录像特级片| 制服丝袜日韩| 91午夜理伦私人影院| 国产美女高潮在线| 日韩在线国产精品| 五月婷在线视频| 日韩你懂的在线观看| 久久久久久不卡| 一区二区三区精品视频| 国产中年熟女高潮大集合| 国产一区二区导航在线播放| 少妇高潮喷水久久久久久久久久| 欧美电影免费观看高清| 久久99国产精品99久久| 伊人国产精品| 欧美中文在线字幕| aa在线视频| 一区二区三欧美| 天天躁日日躁狠狠躁喷水| 欧美人妖巨大在线| 中文字幕在线播| 香港成人在线视频| 顶臀精品视频www| 欧美高清在线一区| 毛茸茸多毛bbb毛多视频| 国产精品一区二区三区乱码 | 日韩a**中文字幕| 97视频在线观看成人| www视频在线看| 丝袜亚洲另类欧美重口| 你懂的在线观看| 亚洲国产精品热久久| 国产又粗又猛又爽又黄的视频一 | 国产精品嫩草影院com| 亚洲国产果冻传媒av在线观看| 国产精品资源在线观看| 国产喷水theporn| 玖玖在线精品| 国产成人a亚洲精v品无码| 黄色免费成人| 久久www视频| 中文视频一区| 在线观看一区二区三区三州 | 成人免费观看在线| 综合国产精品| 蜜臀在线免费观看| 亚洲成人一区| 国产欧美综合一区| 久久精品影视| 91免费视频黄| 羞羞色午夜精品一区二区三区| 天堂社区 天堂综合网 天堂资源最新版| 一区二区三区日本久久久 | 欧美孕妇性xxxⅹ精品hd| 亚洲黄色在线看| 天堂中文资源在线观看| 亚洲国产精品成人一区二区| 亚洲h视频在线观看| 欧美成人午夜电影| 免费观看的毛片| 亚洲国产成人久久综合| 天堂在线观看免费视频| 日韩精品高清在线| 狠狠v欧美ⅴ日韩v亚洲v大胸| 国产一区二区三区四区福利| 国产黄色免费在线观看| 中文字幕久精品免费视频| 日本在线免费网| 久久人人爽人人爽爽久久| 午夜在线激情影院| 欧美精品videos另类日本| 日韩伦理精品| 国产精品高清在线| 欧美综合社区国产| 国产不卡一区二区在线观看| 精品国产午夜肉伦伦影院| 免费成人深夜夜行视频| 日韩夫妻性生活xx| 欧美日韩中文字幕在线播放| 99成人在线| 国产又粗又长又大的视频| 国产在线麻豆精品观看| www.四虎精品| 久久亚洲综合色| 小早川怜子一区二区的演员表| 亚洲精品乱码久久久久久日本蜜臀| 国产一级视频在线观看| 日本高清无吗v一区| 国产欧美熟妇另类久久久 | 久草中文在线观看| 国内精品久久久| 欧美亚洲大片| 91pron在线| 女人av一区| 乱子伦一区二区| 国产美女诱惑一区二区| 小明看看成人免费视频| 97久久精品人人澡人人爽| 欧美三级视频网站| 亚洲一区二区三区爽爽爽爽爽| 亚洲视频 欧美视频| 日韩午夜小视频| www.亚洲.com| 欧美精品videossex88| 韩日精品一区| 国产一区免费在线观看| 97在线精品| 18禁免费无码无遮挡不卡网站| 麻豆精品视频在线| 污污内射在线观看一区二区少妇| 国产精品女同互慰在线看| 日产欧产va高清| 欧美精品欧美精品系列| 日本在线视频1区| 欧美大尺度在线观看| 草民电影神马电影一区二区| 国产综合欧美在线看| 午夜激情久久| 黄色片视频在线播放| 国产69精品久久久久毛片| 日韩一区二区三区四区视频| 午夜av一区二区| 999久久久久久| 在线日韩第一页| 亚洲性受xxx喷奶水| 国产超碰91| 一区二区三区午夜视频| 九热视频在线观看| 91免费看视频| 日本免费观看视| 欧美va亚洲va| 污污的视频在线观看| 91精品国产综合久久香蕉最新版| 国产精品手机在线播放| 日韩精品一区二区三区久久| 成人禁用看黄a在线| www.色小姐com| 欧美一区二区久久| 毛片在线不卡| 成人福利网站在线观看11| 国产成人1区| 欧洲av无码放荡人妇网站| 91丨九色丨国产丨porny| 国产精品第56页| 欧美电影免费观看完整版| 综合久久2019| 91视频免费进入| 欧美一区二区三区另类| 视频区 图片区 小说区| 亚洲男人的天堂一区二区| 国产剧情久久久| 美女撒尿一区二区三区| 国产精品日韩精品在线播放| 小说区视频区图片区| 国模一区二区三区白浆| 国产美女福利视频| 欧美一区二区免费视频| 羞羞视频在线观看不卡| 爱情岛论坛亚洲入口| 伊人成人在线视频| 亚洲婷婷在线观看| 精品国产91久久久久久| 国产一级片在线播放| 国产精品美女在线| 97国产精品| 麻豆tv在线观看| 欧美日韩在线视频一区二区| 青草久久伊人| 国产精品美腿一区在线看| 国产精品久久久久久久久久10秀| 99精品视频国产| 亚洲最大的成人av| 婷婷视频在线观看| 国产精品久久久久久久久久久新郎| 欧美性感美女一区二区| 国产乱码一区二区三区四区| 亚洲免费高清视频在线| 天天摸夜夜添狠狠添婷婷| 国产精品极品尤物在线观看| 欧美国产一级| 扒开伸进免费视频| 色婷婷精品久久二区二区蜜臀av | 欧美激情中文网| 久久91成人| 亚洲免费在线播放视频| 亚洲国产一区二区视频| 欧美扣逼视频| 91精品视频在线免费观看| 激情综合电影网| 性猛交ⅹxxx富婆video | 色哟哟在线观看| 国产精品精品久久久久久| 亚洲二区三区不卡| 日韩av无码一区二区三区不卡| 在线观看免费亚洲| 丝袜在线观看| 日产精品久久久一区二区| 国内精品免费在线观看| 西西44rtwww国产精品| 色婷婷久久av| 精品午夜电影| 五月天婷婷影视| 欧美午夜精品久久久久久浪潮| 欧美jizz18性欧美| 精选一区二区三区四区五区| 久久精品国产免费看久久精品| 福利一区二区三区四区|