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

從原生到黑科技:閑魚Flutter圖片優(yōu)化經(jīng)歷了什么?

開發(fā) 開發(fā)工具
本文介紹閑魚技術團隊在 Flutter 圖片優(yōu)化上所做的嘗試,分享閑魚在典型的圖片處理方案上的技術細節(jié),希望給大家?guī)硪恍﹩l(fā)。

圖片加載是 APP 最常見也最基本的功能,也是影響用戶體驗的因素之一。在看似簡單的圖片加載背后卻隱藏著很多技術難題。本文介紹閑魚技術團隊在 Flutter 圖片優(yōu)化上所做的嘗試,分享閑魚在典型的圖片處理方案上的技術細節(jié),希望給大家?guī)硪恍﹩l(fā)。

那些年

早在閑魚使用 Flutter 之初,圖片就是我們核心關注和重點優(yōu)化的功能。圖片展示體驗的好壞會對閑魚用戶的使用體驗產(chǎn)生巨大影響。你們是否也曾遇到過:

  • 圖片加載內(nèi)存占用過多?
  • 使用 Flutter 以后本地資源重復,利用率不高?
  • 混合方案下 Flutter 原生圖片加載效率不高?

針對上述問題,從第一版 Flutter 業(yè)務上線開始,閑魚對圖片框架的優(yōu)化就從未停止。從開始的原生優(yōu)化,到后面黑科技的外接紋理;從內(nèi)存占用,到包大小;文本會逐一介紹。希望其中的優(yōu)化思路和手段,能給大家?guī)ヒ恍﹩l(fā)。

原生模式

從技術層面看圖片加載,其實簡單來說,追求的是無非是加載的效率的最大化——用盡可能小的資源成本,盡可能快地加載盡可能多的圖片。

閑魚圖片的第一個版本其實基本上是純原生的方案。如果你不想魔改很多底層的邏輯,原生方案肯定是最簡單和經(jīng)濟的方案。原生方案的功能模塊如下:

??

??

如果你啥都沒做直接上了,那么你可能會發(fā)現(xiàn)效果并沒有達到你預期的那么美好。那么如果從原生的方案入手,我們有哪些具體的優(yōu)化手段呢?

設置圖片緩存

沒錯猜對了,是緩存。對于圖片加載,最能想到的方案就是使用緩存。首先原生 Image 的組件是支持自定義圖片緩存的,具體的實現(xiàn)類是 ImageCache。ImageCache 的設置維度是兩個方向:

  • 緩存圖片的張數(shù)。通過 maximumSize 設置。默認是 1000 張。
  • 緩存空間的大小。通過 maximumSizeBytes 來設置。默認值 100M。相比張數(shù)的限制,其實大小的設置方式更加符合我們的最終的預期。

通過合理設置 ImageCache 的大小,能充分利用緩存機制加速圖片加載。不僅如此,閑魚在這個點上還做了額外兩個重要優(yōu)化:

低端手機適配

在上線以后,我們陸續(xù)收到線上輿情的反饋,發(fā)現(xiàn)全部機型設置同一個緩存大小的做法并非最優(yōu)。特別是大緩存設置在低端機器上面,不僅會出現(xiàn)體驗變差,甚至還會影響穩(wěn)定性。基于實際情況,我們實現(xiàn)了一個能從 Native 側(cè)獲取機器基礎信息的 Flutter 插件。通過獲取的信息,我們根據(jù)不同手機的配置設置不同的緩存策略。在低端機器上面適當降低圖片緩存的大小,同時在高端手機上將其適當放大。這樣能在不同配置的手機上獲取最優(yōu)的緩存性能。

磁盤緩存

熟悉 APP 開發(fā)的同學都知道,成熟的圖片加載框架一般都有多級緩存。除了常見的內(nèi)存緩存,一般都會配置一個文件緩存。從加載效率上來說,是通過空間換時間,提升加載速度。從穩(wěn)定性來說,這又不會過分占用寶貴的內(nèi)存資源,出現(xiàn) OOM。但是可惜的是,F(xiàn)lutter 自帶的圖片加載框架并沒有獨立的磁盤緩存。所以我們在原生方案的基礎上擴展了磁盤緩存能力。

在具體的架構(gòu)實現(xiàn)上,我們并沒有完全自己擼一個磁盤緩存。我們的策略還是復用現(xiàn)有能力。首先我們將 Native 圖片加載框架的磁盤緩存的功能通過接口暴露出來。然后通過橋接的方式,將 Native 磁盤緩存能力嫁接到 Flutter 層。Flutter 側(cè)進行圖片加載的時候,如果內(nèi)存沒有命中,就去磁盤緩存中進行二次搜索。如果都沒有命中才會走網(wǎng)絡請求。

通過增加磁盤緩存,F(xiàn)lutter 圖片加載效率進一步提升。

??

??

設置 CDN 優(yōu)化

CDN 優(yōu)化是另一個非常重要圖片優(yōu)化手段。CDN 優(yōu)化的效率提升主要是:最小化傳輸圖片的大小。常見策略包括:

根據(jù)顯示大小裁剪

簡單來說,你要加載圖片的真實尺寸,可能會大于你實際展示窗口的大小。那么你就沒必要加載完整大圖,你只需要加載一個能覆蓋窗口大小的圖片即可。通過這種方式,裁剪掉不需要的部分,就能最小化傳輸圖片的大小。從端側(cè)角度來說,一來可以提升加載速度,二來可以降低內(nèi)存占用。

適當壓縮圖片大小

這里主要是根據(jù)實際情況增加圖片壓縮的比例。在不影響顯示效果的情況下,通過壓縮進一步降低圖片的大小。

圖片格式

建議優(yōu)先使用 webp 這樣格式,圖片資源相對小。Flutter 原生支持 webp(包括動圖)。這里特別強調(diào)一下 webp 動圖不僅大小要比 gif 小很多,而且還對透明效果有更好的支持。webp 動圖是 gif 方案比較理想的一種替代方案。

??

??

基于上述原因,閑魚圖片框架在 Flutter 側(cè)實現(xiàn)了一套 CDN 尺寸匹配的算法。通過該算法,請求圖片會根據(jù)實際顯示的大小,自動匹配到最合適的尺寸上并適當壓縮。如果圖片格式允許,圖片盡可能轉(zhuǎn)化成 webp 格式下發(fā)。這樣 CDN 圖片的傳輸就能盡可能高效。

其他優(yōu)化

除了上面的策略,F(xiàn)lutter 還有一些其他的手段可以優(yōu)化圖片的性能。

圖片預加載

如果你想在展示的圖片的盡可能的快,官方也提供了一套預加載的機制:precacheImage。precacheImage 能預先將圖片加載到內(nèi)存,真正使用的時候就能秒出了。

Element 復用優(yōu)化

其實這個算是一個 Flutter 通用的優(yōu)化方案。復寫 didWidgetUpdate 方案,通過比較前后兩次 widget 中針對圖片的描述是否一致,來決定是否重新渲染 Element。這樣能避免同一個圖片,不必要的反復渲染。

長列表優(yōu)化

一般情況下,Listview 是 flutter 最為常見的滾動容器。在 Listview 中的性能好壞,直接影響最終的用戶體驗。

Flutter 的 Listview 跟 Native 的實現(xiàn)思路并不相同。其最大的特點是有一個 viewPort 的概念。超出 viewPort 的部分會被強制回收掉。

基于上述的原理,我們有兩點建議:

1)cell 拆分

盡量避免大型的 cell 出現(xiàn),這樣能大幅降低 cell 頻繁創(chuàng)建過程中的性能損耗。其實這里影響的不僅僅是圖片加載過程。文字,視頻等其他組件也都應該避免 cell 過于復雜導致的性能問題。

2)合理使用緩沖區(qū)

ListView 可以通過設置 cacheExtent 來設置預先加載的內(nèi)容大小。通過預先加載可以提升 view 渲染的速度。但是這個值需要合理設置,并非越大越好。因為預加載緩存越大,對頁面整體內(nèi)存的壓力就越大。

該方案的不足

這里需要客觀指出:如果是一個純 Flutter APP,原生方案是完善,夠用的。但是如果從混合 APP 的角度來說,有如下兩個缺陷:

1)無法復用 Native 圖片加載能力

毫無疑問,原生的圖片方案是完全獨立的圖片加載方案。對于一個混合 APP 來說,原生方案和 Native 的圖片框架相互獨立,能力無法復用。例如 CDN 裁剪 & 壓縮等能力需要重復建設。特別是 Native一些獨特的圖片解碼能力,F(xiàn)lutter 就很難使用。這會造成 APP 范圍內(nèi)的圖片格式的支持不統(tǒng)一。

2)內(nèi)存性能不足

從整個 APP 的視角來說,采用原生圖片方案的情況下,其實我們維護了兩個大的緩存池:一個是 Native 的圖片緩存,一個是 Flutter 側(cè)的圖片緩存。兩個緩存無法互通,這無疑是一個巨大的浪費。特別是對內(nèi)存的峰值內(nèi)存性能產(chǎn)生了非常大的壓力。

打通 Native

經(jīng)過多輪優(yōu)化,基于原生的方案已經(jīng)獲得了非常大的性能提升。但是整個 APP 的內(nèi)存水位線依然比較高(特別是 Ios 端)。現(xiàn)實的壓力迫使我們繼續(xù)對圖片框架進行更深度的優(yōu)化。基于上述原生方案缺點的分析,我們有了一個大膽的想法:能否完全復用 Native 的圖片加載能力?

外接紋理

怎樣打通 Flutter 和 Native 的圖片能力?我們想到了外接紋理。外接紋理并非是 Flutter 自有的技術,它是音視頻領域常用的一種性能優(yōu)化手段。

這個階段我們基于 shared-Context 的方案實現(xiàn)了 Flutter 和 Native 的紋理外接。通過該方案,F(xiàn)lutter 可以通過共享紋理的方式,拿到 Native 圖片庫加載好的圖片并展示。為了實現(xiàn)這個紋理共享的通道,我們對 engine 層做了深度定制。細節(jié)過程如下:

??

??

該方案不僅打通了 Native 和 Flutter 的圖片架構(gòu),整個過程圖片加載的性能也得到了優(yōu)化。

外接紋理是閑魚圖片方案的一次大跨越。通過該技術,我們不僅實現(xiàn)圖片方案的本地能力復用,而且還能實現(xiàn)視頻能力的紋理外接。這避免了大量重復的建設,提升了整個 APP 的性能。

多頁面內(nèi)存優(yōu)化

這個優(yōu)化策略真真是被逼出來的。在對線上數(shù)據(jù)分析以后,我們發(fā)現(xiàn) Flutter 頁面棧有一個非常有意思的特點:多頁面棧情況下,底層的頁面不會被釋放。即便是在內(nèi)存非常緊張的情況下,也不會執(zhí)行回收。這樣就會導致一個問題:隨著頁面的增多,內(nèi)存消耗會線性增長。這里占比最高的就是圖片資源的占比了。

是不是可以在頁面處于頁面棧底層的時候直接回收掉該頁面內(nèi)的圖片呢?

在這個想法的驅(qū)動下,我們對圖片架構(gòu)進行了新一輪的優(yōu)化。整個圖片框架中的圖片都會監(jiān)聽頁面棧的變化。當方發(fā)現(xiàn)自己已經(jīng)處于非棧頂?shù)臅r候,就自動回收掉對應的圖片紋理釋放資源。這種方案能使圖片占用的內(nèi)存大小不會隨著頁面數(shù)的變多呈現(xiàn)持續(xù)線性增長。原理如下:

??

??

需要注意的是:這個階段頁面判斷位置其實是需要頁面棧(具體來說就是混合棧)提供額外的接口來實現(xiàn)的。系統(tǒng)之間的耦合相對較高。

意外收獲:包大小

打通 Native 和 Flutter 側(cè)圖片框架以后,我們發(fā)現(xiàn)了一個意外收獲:Native 和 Flutter 可以共用本地圖片資源了。也就是說,我們不再需要將相同的圖片資源在 Flutter 和 Native 側(cè)各保留一份了。這樣能大幅提升本地資源的復用率,從而降低整體的包大小。基于這個方案,我們實現(xiàn)了一套資源管理的功能,腳本能自動同步不同端的本地圖片資源。通過這樣提升本地資源利用率,降低包大小。

其他優(yōu)化——PlaceHolder 強化

原生的 Image 是沒有 PlaceHolder 功能的。如果想用原生方案的話,需要使用 FadeInImage。針對閑魚的場景我們有很多定制,所以我們自己實現(xiàn)了一套 PlaceHolder 的機制。

從核心功能上來說,我們引入了加載狀態(tài)的概念分為:

  1. 未初始化
  2. 加載中
  3. 加載完成

針對不同的狀態(tài),可以細粒度的控制 PlaceHolder 的展示邏輯。

整體架構(gòu)

??

??

該方案的不足

畢竟改了 engine

隨著閑魚業(yè)務的不斷推進,engine 的升級的成本是我們必須要考慮的事情。能否不改 engine 實現(xiàn)同樣的功能是我們核心的述求(PS:我承認我們是貪心的)。

通道性能還有優(yōu)化空間

外接紋理的方案需要通過橋的方式跟 Native 的能力做通信。這里包括圖片請求的傳遞和圖片加載各種狀態(tài)的同步。特別是在 listview 快速滑動的時候,通過橋發(fā)送的數(shù)據(jù)量還是可觀的。當前方案每個圖片加載時都會單獨進行橋的調(diào)用。在圖片數(shù)量比較多的情況下,這顯然會是一個瓶頸。

耦合過多

在實現(xiàn)圖片回收方案的時候,目前方案需要棧提供是否在棧底層的接口。這里就產(chǎn)生方案耦合,很難抽象出一個獨立干凈的圖片加載方案。

Clean & Efficient

時間來到了 2020 年,隨著對 Flutter 基礎能力理解的逐步深入,我們實現(xiàn)了一個整體方案更優(yōu)的圖片框架。

無侵入外接紋理

外接紋理可以不用修改 engine 么?答案是肯定的。

其實 Flutter 是提供了官方的外接紋理方案的。

??

??

而且 Native 操作的 texture 和 Flutter 側(cè)顯示的 texture 在底層是同一對象,并沒有產(chǎn)生額外的數(shù)據(jù) copy。這樣就保證了紋理共享的足夠高效。那為什么閑魚之前會單獨基于 shared-Context 自己實現(xiàn)一套呢?1.12 版本之前,官方 Ios 的外接紋理方案有性能問題。每次渲染的過程中(不管紋理是否有更新)都會頻繁獲取 CVPixelBuffer,造成不必要的性能損耗(過程有加鎖損耗)。該問題已經(jīng)在 1.12 版本中修復(官方 commit 地址),這樣官方方案也足夠滿足需求。在這樣的背景下,我們重新啟用官方方案來實現(xiàn)外接紋理功能。

獨立的內(nèi)存優(yōu)化

之前提到過,老版本的基于頁面棧的圖片資源回收需要強依賴棧功能的接口。一方面產(chǎn)生了不必要的依賴,更重要的是,整體方案無法獨立成通用方案。為了解決這個問題,我們對 Flutter 底層進行了深入的研究。我們發(fā)現(xiàn) Flutter 的 layer 層可以穩(wěn)定感知到頁面棧的變化。

??

??

然后每個頁面通過 context 獲取的 router 對象作為標識對一個頁面中的所有的圖片對象進行重新組織。所有獲取到同一個 router 對象的標識成同一個頁面。這樣就能以頁面為單位對所有的圖片進行管理。整體上通過 LRU 的算法來模擬虛擬頁面棧結(jié)構(gòu)。這樣就能對棧底頁面的圖片資源實現(xiàn)回收了。

其他優(yōu)化

通道的高度復用

首先我們以一幀為單位對這一幀中的圖片請求進行聚合,然后在一次通道請求中傳遞給 Native 的圖片加載框架。這樣能避免頻繁的橋調(diào)用。特別在快速滾動等場景下優(yōu)化效果尤為明顯。

??

??

高效的紋理復用

使用外接紋理進行圖片加載以后,我們發(fā)現(xiàn)復用紋理可以進一步提升性能。舉一個簡單的場景。我們知道電商場景中,商品展示經(jīng)常會有標簽,打底圖這樣的圖片。這類圖片往往在不同的商品上會出現(xiàn)大量重復。這時候,可以將已經(jīng)渲染好的紋理,直接復用給不同的顯示組件。這樣能進一步優(yōu)化 GPU 內(nèi)存的占用,避免重復創(chuàng)建。為了精確對紋理進行管理,我們引入了引用計數(shù)的算法來管理紋理的復用。通過這些方案,我們實現(xiàn)了紋理跨頁面高效復用。

??

??

此外,我們將紋理和請求的映射關系移動到了 Flutter 側(cè)。這樣能在最短路徑上完成紋理的復用,進一步減少了橋的通信的壓力。

整體架構(gòu)

??

??

優(yōu)化效果

由于最新的版本目前還在灰度,具體數(shù)據(jù)后續(xù)會寫文跟大家詳細介紹。下屬數(shù)據(jù)主要以方案二為主。

內(nèi)存優(yōu)化

通過打通 Native,相比于首次上線版本,在顯示效果不變的情況下,Ios 的 abort 率降低 25%,用戶體驗明顯提升。

多頁面棧內(nèi)存優(yōu)化

多頁面棧的內(nèi)存優(yōu)化,在多頁面場景下對內(nèi)存優(yōu)化作用明顯。我們做了一個極限試驗效果如下(測試環(huán)境,非閑魚 APP):

??

??

可見多頁面棧的優(yōu)化,可以將多 Flutter 頁面的內(nèi)存占用控制得更好。

包大小減少

通過接入外接紋理,本地資源得到了更好的復用,包大小降低 1M。早期閑魚接入 Flutter,會以改造現(xiàn)有頁面為切入點。資源重復情況比較嚴重,但是隨著閑魚 Flutter 新業(yè)務越來越多。Flutter 和 Native 的重復資源越來越少。外接紋理對包大小的影響已經(jīng)逐步變?nèi)酢?/p>

后續(xù)計劃

這是一場沒有盡頭的旅行,我們對閑魚圖片的優(yōu)化還會持續(xù)。特別是我們最新的方案,受限篇幅,本文只是做了初步介紹。更多技術細節(jié),包括測試數(shù)據(jù),我們隨后還會專門寫文繼續(xù)給大家做介紹。方案完善以后,我們也會逐步開源。

【本文為51CTO專欄作者“阿里巴巴官方技術”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

??戳這里,看該作者更多好文??

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2017-07-10 17:42:20

互聯(lián)網(wǎng)

2023-07-24 07:57:23

C++標準功能

2017-11-14 16:38:05

智慧新城

2025-04-21 04:00:00

2017-12-04 09:26:56

架構(gòu)師碼農(nóng)菜鳥

2025-03-06 14:00:00

C#性能頁面

2024-06-21 08:02:22

2020-03-18 08:56:27

頁面網(wǎng)址內(nèi)容

2025-05-12 10:15:00

Linuxdiff系統(tǒng)

2018-09-14 14:20:43

人肉智能運維

2021-07-09 11:29:22

交易鏈路閑魚阿里云

2017-05-09 16:20:47

3D打印3D食品

2023-10-30 23:14:57

瀏覽器URL網(wǎng)頁

2025-04-30 10:55:46

2023-11-28 08:24:21

SQLredis

2018-08-25 14:07:24

數(shù)據(jù)聚合閑魚前端

2022-02-06 23:10:11

冬奧會黑科技人工智能

2022-05-24 12:57:49

函數(shù)代碼Java

2025-10-16 07:45:31

2021-10-08 10:05:10

數(shù)據(jù)包三次握手HTTP
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久久久ktv| 亚洲福利视频在线| 色爽爽爽爽爽爽爽爽| www.超碰在线.com| 亚洲综合国产激情另类一区| 亚洲欧洲黄色网| 欧美日韩久久婷婷| 精品人人视频| 一区二区中文视频| 久久av一区二区三区亚洲| 丰满人妻一区二区三区四区| 欧美日本一区| 正在播放国产一区| 亚洲熟女乱综合一区二区三区| 色成人免费网站| 亚洲中国最大av网站| 日韩欧美精品一区二区| 亚洲女人18毛片水真多| 免费av网站大全久久| 高清在线视频日韩欧美| 91免费在线看片| 欧美美女在线直播| 欧美一区二区三区影视| 久草综合在线观看| 高清电影在线免费观看| 国产精品国产自产拍高清av| 久久久久天天天天| 亚洲av色香蕉一区二区三区| 六月丁香婷婷色狠狠久久| 亚州欧美日韩中文视频| 国产一二三区精品| 久久综合99| 亚洲视频在线看| 亚洲天堂美女视频| 成人自拍在线| 91精品国产综合久久精品图片| 免费大片在线观看| 中文不卡1区2区3区| 亚洲午夜在线电影| 4444亚洲人成无码网在线观看| 69xxxx欧美| 国产三级精品视频| 欧美黄色直播| 三级视频网站在线| 久久夜色精品国产噜噜av| 91中文字精品一区二区| 国产男女无套免费网站| 精彩视频一区二区三区| 国产日韩欧美视频在线| 一区二区三区午夜| 另类欧美日韩国产在线| 国产精品丝袜久久久久久不卡| 亚洲黄网在线观看| 久久久久在线| 国产精品久久久久999| 成人一二三四区| 日本伊人午夜精品| 国产美女高潮久久白浆| 一本到在线视频| 国产综合色在线视频区| 成人网在线免费看| 国产av无码专区亚洲a∨毛片| 国产一区二区在线电影| 96成人在线视频| 免费观看国产视频| 91社区在线播放| 欧美日韩精品免费看| 国产毛片在线看| 国产精品午夜免费| 视频一区二区视频| 都市激情久久综合| 欧美日韩激情网| 欧美国产日韩在线播放| 国产精品伊人| 日韩精品在线一区二区| 国产xxxx视频| 国产麻豆一区二区三区精品视频| 亚洲图片欧美日产| 男人的午夜天堂| 好看不卡的中文字幕| 97婷婷涩涩精品一区| 欧美日韩一级黄色片| 全国精品久久少妇| 91精品视频免费观看| 亚洲国产成人在线观看| 26uuu亚洲综合色欧美| 日本日本精品二区免费| 91中文在线| 欧美日韩在线视频一区二区| 男操女免费网站| 精品国产三区在线| 日韩乱码在线视频| 大地资源高清在线视频观看| 亚洲国产片色| 国产免费一区二区三区香蕉精| www视频在线| 久久久综合视频| 最新av网址在线观看| 伊人久久综合一区二区| 9191国产精品| 天堂久久久久久| 91九色精品国产一区二区| 国模精品一区二区三区色天香| 国产成人无码专区| 国产成人8x视频一区二区| 欧美一区2区三区4区公司二百 | 亚洲精品99久久久久中文字幕| 久久美女免费视频| 一区久久精品| 国产一区二中文字幕在线看| 色综合888| 亚洲黄色录像片| 久久久久久三级| 国产亚洲成av人片在线观黄桃| 中文字幕在线亚洲| 五月婷婷色丁香| 国产精品1区2区| 亚洲一区二区三区免费观看| 涩涩涩在线视频| 精品久久久久久无| 亚洲欧美小视频| 日韩国产欧美一区二区三区| 国产一区二区三区av在线| 欧美jizz18hd性欧美| 日本韩国欧美三级| 亚洲av成人片色在线观看高潮| 亚洲最新色图| 国产拍精品一二三| 成人免费视频| 在线观看亚洲一区| 亚洲第一成人网站| 亚洲永久字幕| 久久精品中文字幕一区二区三区| 欧美亚洲系列| 日韩一区二区三| 最新一区二区三区| 国产伦精品一区二区三区在线观看| 日韩免费电影一区二区三区| 欧美三级精品| 亚洲欧洲日韩国产| 中文字幕av影院| 337p粉嫩大胆色噜噜噜噜亚洲| 日韩av一二三四区| 久久这里只有精品一区二区| 国模精品一区二区三区色天香| 高清毛片aaaaaaaaa片| 亚洲女爱视频在线| 国产老头和老头xxxx×| 中文字幕一区二区av| 99久久一区三区四区免费| 激情网站在线| 精品乱码亚洲一区二区不卡| 久久久美女视频| 成人黄色小视频在线观看| 国产九九九九九| 亚欧日韩另类中文欧美| 青草成人免费视频| 经典三级在线| 欧美日韩精品福利| wwwav国产| 成人免费va视频| 乱妇乱女熟妇熟女网站| 蜜乳av综合| 国产精品色午夜在线观看| 米奇777四色精品人人爽| 日韩欧美一区二区不卡| 精品少妇theporn| 99精品国产99久久久久久白柏| 国产精品沙发午睡系列| 国产欧美日韩在线观看视频| 国产在线高清精品| 日韩少妇视频| 亚洲男人天堂古典| 91久久久久国产一区二区| 一区二区在线观看视频| 成人手机在线免费视频| 免费在线看成人av| wwwjizzjizzcom| 亚洲精品白浆高清| 国产一区二区视频在线观看| 青青在线视频| 亚洲欧洲黄色网| 超碰在线观看av| 色视频一区二区| 成人免费精品动漫网站| 97久久精品人人做人人爽50路| 亚洲 欧美 另类人妖| 好吊一区二区三区| 亚洲欧美久久234| 99亚洲乱人伦aⅴ精品| 国产精品久久999| 人人澡人人添人人爽一区二区| 亚洲欧美日韩精品久久| www.色视频| 欧美曰成人黄网| 日本系列第一页| 中文字幕在线不卡| 极品人妻一区二区三区| 国产麻豆精品一区二区| 国产福利影院在线观看| 精品不卡视频| 一区二区三视频| 伊人久久大香线蕉| 97se亚洲综合| 日韩黄色三级| 国产极品jizzhd欧美| hd国产人妖ts另类视频| 久久精品电影网站| 国产女人在线观看| 日韩精品日韩在线观看| 国产丝袜在线视频| 欧美三级在线看| 欧美国产成人精品一区二区三区| 亚洲精品视频自拍| 懂色av蜜臀av粉嫩av永久| 2014亚洲片线观看视频免费| 国产九九九视频| 久久99九九99精品| 欧美午夜性生活| 性色一区二区| 久久久久免费看黄a片app| 你懂的国产精品| 日本黄色a视频| 三上亚洲一区二区| 日本一区视频在线观看| 台湾色综合娱乐中文网| 国产一区精品视频| 97久久亚洲| 999在线观看免费大全电视剧| 色综合一区二区日本韩国亚洲| 国产精品aaa| 国模冰冰炮一区二区| 7m精品福利视频导航| av2020不卡| 国内精品视频久久| 3d玉蒲团在线观看| 欧美乱大交xxxxx另类电影| dy888亚洲精品一区二区三区| 精品国模在线视频| 日韩黄色影院| 精品国产一区二区三区久久久狼| 成年人视频免费在线观看| 亚洲品质视频自拍网| 男人的天堂av高清在线| 亚洲人成电影网站| 国产精品一级伦理| 一区二区三区黄色| 久操视频在线观看| 精品激情国产视频| 2024最新电影在线免费观看| 欧美老少配视频| 欧美人与牲禽动交com| 欧美极品少妇与黑人| 678在线观看视频| 2021国产精品视频| 最近高清中文在线字幕在线观看1| 69久久夜色精品国产69乱青草| 人狥杂交一区欧美二区| 日韩美女免费视频| 国产激情欧美| 91影院未满十八岁禁止入内| 国产在线播放精品| 欧美精品国产精品久久久| blacked蜜桃精品一区| 这里只有精品66| 自拍日韩欧美| 国产精品无码一区二区在线| 久久午夜av| 免费大片在线观看| 国产一区二区三区免费在线观看| 潘金莲一级淫片aaaaa| 99国产精品久久久久久久久久| 中文字幕一区二区三区人妻电影| 国产丝袜美腿一区二区三区| 午夜精品一区二区三级视频| 亚洲午夜免费福利视频| 亚洲欧美一区二区三区在线观看| 欧美日韩精品一区二区在线播放| hs视频在线观看| 日韩精品在线观看一区| 欧美成人hd| 91国产在线精品| 88xx成人网| 国产成人一区二区三区免费看| 久久最新网址| 欧美一区二区视频在线播放| 亚洲在线黄色| 日本高清免费观看| 久久久久国产精品厨房| 亚洲 欧美 变态 另类 综合| 欧美日韩精品在线播放| 91成品人影院| 国产婷婷97碰碰久久人人蜜臀| 免费在线视频欧美| 1769国内精品视频在线播放| 91精品国产自产观看在线| 精品国产一区二区三| 亚洲成人99| 免费大片在线观看| 成人avav影音| 国产午夜精品理论片在线| 色天使色偷偷av一区二区| 亚洲精品一区二区三区四区| 中文字幕视频一区二区在线有码 | 深爱激情五月婷婷| 日韩一区在线视频| 伊人久久国产| 国产精品免费视频一区二区| 99精品视频精品精品视频| 男人日女人下面视频| 国产精品资源站在线| 国产ts在线播放| 亚洲福利一区二区| 国产精品欧美久久久久天天影视| 亚洲欧美国产精品va在线观看| 羞羞视频在线观看不卡| 成人精品网站在线观看| 精品亚洲成人| 男女av免费观看| 99久久精品国产精品久久| 久一区二区三区| 日韩一区二区三区高清免费看看| 中文字幕在线免费| 国产精品久久久91| 精品久久国产| 日本久久久精品视频| 91免费看视频| 日韩视频免费观看高清| 精品国产凹凸成av人导航| 在线中文字幕-区二区三区四区| 国产三级精品网站| 欧美电影一区| 尤物国产在线观看| 国产精品久久久久久久午夜片| 艳妇乳肉豪妇荡乳av无码福利| 亚洲视频在线视频| 怡红院成人在线| 欧美日韩精品久久久免费观看| 久久成人一区| 性欧美13一14内谢| 色婷婷亚洲综合| 国产一二三在线观看| 国产精品久久久久久久久久新婚| 国产成人一区二区三区影院| 黄色一级大片在线观看| 久久亚洲一区二区三区明星换脸| 激情视频网站在线观看| 国产亚洲欧美日韩美女| 成人自拍视频网| 一区二区三区欧美成人| 国产呦精品一区二区三区网站| 日本精品在线免费观看| 欧美刺激脚交jootjob| 丁香高清在线观看完整电影视频 | 女人天堂在线| 国产成人97精品免费看片| 欧美日韩精品在线一区| 欧美国产日韩另类| 一区二区三区在线视频观看| 欧美一级做性受免费大片免费| 91精品国产91久久久久| 九九久久婷婷| 亚洲黄色av片| 亚洲午夜三级在线| 久久经典视频| 成人欧美一区二区三区在线湿哒哒| 欧美日韩一区二区三区四区在线观看| 农村末发育av片一区二区| 欧美日韩国产一区在线| 超碰免费在线| 99国产超薄肉色丝袜交足的后果| 亚洲国产免费看| 欧美福利第一页| 日韩欧美在线影院| 理论不卡电影大全神| 亚洲欧美久久234| 成人免费视频一区| 精品国产乱子伦| 久久亚洲国产精品| 日韩在线黄色| 深爱五月综合网| 日韩欧美极品在线观看| 免费在线看a| 精品综合久久久| 激情图区综合网| 草久视频在线观看| 久久九九精品99国产精品| 免费日韩一区二区三区| 一本色道久久亚洲综合精品蜜桃 | 日韩在线观看免费高清| 成人午夜大片| 岛国毛片在线播放| 午夜精品视频一区| 免费黄色网址在线观看| 久久riav| 成人精品高清在线| 91tv国产成人福利| 国产精品高清网站| 亚洲欧洲一区| 青娱乐国产盛宴|