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

Android性能優化之網絡優化

網絡 通信技術
在移動互聯網的快速發展環境下,手機用戶日益對網絡的使用或體驗有著更深度的訴求,因此應用中的網絡體驗已經顯得由此重要。

[[414087]]

前言小計

在移動互聯網的快速發展環境下,手機用戶日益對網絡的使用或體驗有著更深度的訴求,因此應用中的網絡體驗已經顯得由此重要;

網絡影響:

1.最直觀的就是用戶交互體驗;

2.流量的流失;

3.電量的消耗;

上篇文章介紹了網絡請求過程中dns,本文主要針對Android上網絡優化

圖片

一、網絡數據緩存優化

提供一種將數據存儲到本地的思想,實現減少服務器的請求負荷、加快請求速度、無網也能顯示內容;

(1)對于常訪問的數據或首頁數據,盡量緩存在本地,加載時優先加載本地數據,然后在請求網絡數據,更新頁面并更新緩存;

(2)在網絡丟失或者網絡差需要保存數據時, 網數據保存在本地,并且把發出的請求添加到隊列中,當網絡恢復的時候再及時發出;

(3) 強制緩存:在緩存數據未失效的情況下,可以直接使用緩存數據,由兩個字段Expires和Cache-Control用于標明失效規則;

(4)對比緩存:表示需要和服務端進行相關信息的對比,由服務器決定是使用緩存還是最新內容,如果服務器判定使用緩存,返回響應嗎304,判定使用最新內容,則返回響應碼200和最新數據;

(5)okhttp上的緩存設置

進行數據緩存,我們可以在返回上加上過期時間,避免重新獲取。這種做法節約了流量,且大幅提高數據訪問的速度,增強了用戶體驗。在OKHTTP與Volley等一些網絡框架中都有很好的實踐;

下面進行OKHTTP,在無網絡的情況下使用cache進行緩存

  1. public class NoNetInterceptor implements Interceptor { 
  2.     @Override 
  3.     public Response intercept(Chain chain) throws IOException { 
  4.         Request request = chain.request(); 
  5.         Request.Builder builder = request.newBuilder(); 
  6.         if(!Utils.isNetworkConnected(PerformanceApp.getApplication())){ 
  7.             builder.cacheControl(CacheControl.FORCE_CACHE); 
  8.         } 
  9.         return chain.proceed(builder.build()); 
  10.     } 
  11.  static { 
  12.         OkHttpClient.Builder client = new OkHttpClient.Builder(); 
  13.         HttpLoggingInterceptor logging = new HttpLoggingInterceptor(); 
  14.         logging.setLevel(HttpLoggingInterceptor.Level.BODY); 
  15.         Cache cache = new Cache(PerformanceApp.getApplication().getCacheDir(),10*1024*1024); 
  16.         client. 
  17.                 cache(cache). 
  18.                 eventListenerFactory(OkHttpEventListener.FACTORY). 
  19.                 dns(OkHttpDNS.getIns(PerformanceApp.getApplication())). 
  20.                 addInterceptor(new NoNetInterceptor()). 
  21.                 addInterceptor(logging); 
  22.         final Retrofit RETROFIT = new Retrofit.Builder() 
  23.                 .baseUrl(HTTP_SPORTSNBA_QQ_COM) 
  24.                 .addConverterFactory(FastJsonConverterFactory.create()) 
  25.                 .client(client.build()) 
  26.                 .build(); 
  27.         API_SERVICE = RETROFIT.create(APIService.class); 
  28.     } 

二、dns優化和httpdns

1、dns解析流程

圖片
  • 在App內用域名發送請求都要經過DNS解析出ip,然后再根據ip去拿對應的資源,這個過程中,如果LocalDNS中存在這個域名對應的ip,就會直接返回這個ip,類似于App內做緩存;
  • 如果不存在,才會去權威DNS查詢改訪問哪個ip,然后查詢到的ip會在LocalDNS中做緩存。也就是說,如果我們要訪問新浪http://api.weibo.cn,如果LocalDNS里面有該域名對應的ip,就直接返回了ip了。
圖片

2、問題分析

  • 一個新用戶使用來訪問api.weibo.cn,由于localDNS緩存的存在,不會去查詢新浪的權威DNS,這樣返回的ip是聯通這個運營商的ip,從而會使得用戶出現訪問變慢等狀況;
  • 緩存還會導致一點就是,當權威DNS將域名與ip的映射發生改變之后,由于LocalDNS緩存沒有及時改變,用戶就會訪問到錯誤的服務器,或者直接訪問不到資源;
  • 很多三四級運營商會把運營解析指向他們的緩存服務器上,并把網頁里面的廣告替換成他們自己的,或者內嵌他們自己的廣告(之前做的APP出現過這樣的情況,投訴之后會好上一段時間,但是過段時間又會出現廣告);
  • 竟然DNS解析存在問題,那有沒有一種調度精準、成本低廉、配置方便的基于域名的流量調度系統呢?
  • HttpDNS基于Http協議和域名解析的流量調度解決方案,可以在很大程度上防止上面的問題出現;

3、HttpDNS 概念

  • 客戶端直接訪問HttpDNS接口,獲取業務在域名配置管理系統上配置的訪問延遲最優的IP;
  • 客戶端向獲取到的IP后就向直接往此IP發送業務協議請求。以Http請求為例,通過在header中指定host字段,向HttpDNS返回的IP發送標準的Http請求即可;
  • 采用HttpDNS來解析域名,就繞過了三四級運營商解析域名會出現的問題,在HttpDNS返回了正確的ip之后,我們是直接采用ip去進行http請求,只需要關注通信內容的安全即可;

4、HTTPDNS 工作模式

  • 在客戶端的 SDK 里動態請求服務端,獲取 HTTPDNS 服務器的 IP 列表,緩存到本地。隨著不斷地解析域名,SDK 也會在本地緩存 DNS 域名解析的結果;
  • 當手機應用要訪問一個地址的時候,首先看是否有本地的緩存,如果有就直接返回。這個緩存和本地 DNS 的緩存不一樣的是,這個是手機應用自己做的,而非整個運營商統一做的。如何更新、何時更新,手機應用的客戶端可以和服務器協調來做這件事情;
  • 如果本地沒有,就需要請求 HTTPDNS 的服務器,在本地 HTTPDNS 服務器的IP 列表中,選擇一個發出 HTTP 的請求,會返回一個要訪問的網站的 IP 列表;

請求的方式是這樣的。

  1. http://106.2.xxx.xxx/d?dn=c.m.163.com 
  2. {"dns":[{"host":"c.m.163.com","ips":["223.252.199.12"],"ttl":300,"http2":0}],"client":{"ip":"106.2.81.50","line":269692944}} 

手機客戶端自然知道手機在哪個運營商、哪個地址。由于是直接的 HTTP 通信,HTTPDNS 服務器能夠準確知道這些信息,因而可以做精準的全局負載均衡;

5、HttpDNS緩存設計

  • HTTPDNS 的緩存設計策略也是咱們做應用架構中常用的緩存設計模式,也即分為客戶端、緩存、數據源三層,分別對應 SDK 客戶端、本地緩存、HTTPDNS 服務器;
  • App內維護一個Serve IP List。把每次App從HttpDNS取到的ip存儲進入該數組,并設置權重,理論上來說從HttpDns解析下來的ip權重是最大的。這個List可以在App啟動的時候,進行更新,同時取出本地緩存的Serve IP List的權重最大的ip進行數據的初始化操作(如果第一次啟動,沒有該List的話,就使用LocalDNS進行解析);
  • Serve IP List里面的權重設置機制,很明顯的一點就是從DNS解析出來的ip具有最大的權重,每次從List里面取ip應該要取權重最大的ip。列表中的ip也是需要可以動態更新配置的,根據連接或者服務的成功失敗來進行動態調整,這樣即使DNS解析失敗,用戶在一段時間后也會取到合適的ip進行訪問;
  • 對ip進行數據統計。在所有app內統計每個ip進行請求所需平均時間、最長時間、最短時間、請求成功次數、失敗次數,需要注意的是,要區分網絡環境進行統計,Wifi、4G、3G,對在不同的網絡環境下數據優秀的ip進行存儲,下發到App里面使用起來。這樣每次啟動App時可以對收集起來的ip根據不同的網絡環境進行測速,選擇最好的ip進行請求。需要注意的是,在網絡環境切換的時候,必須要重新進行速度測試。做到這一步,可以節約DNS解析時間,以及劫持的問題;
  • SDK 中的緩存會嚴格按照緩存過期時間,如果緩存沒有命中,或者已經過期,而且客戶端不允許使用過期的記錄,則會發起一次解析,保障記錄是更新的;

6、HTTPDNS調度設計

  • 在客戶端,可以知道手機是哪個國家、哪個運營商、哪個省,甚至哪個市,HTTPDNS服務端可以根據這些信息,選擇最佳的服務節點返回;
  • 如果有多個節點,還會考慮錯誤率、請求時間、服務器壓力、網絡狀況等,進行綜合選擇,而非僅僅考慮地理位置。當有一個節點宕機或者性能下降的時候,可以盡快進行切換;
  • 要做到這一點,需要客戶端使用 HTTPDNS 返回的 IP 訪問業務應用。客戶端的 SDK 會收集網絡請求數據,如錯誤率、請求時間等網絡請求質量數據,并發送到統計后臺,進行分析、聚合,以此查看不同的 IP 的服務質量;
  • 在服務端,應用可以通過調用 HTTPDNS 的管理接口,配置不同服務質量的優先級、權重。HTTPDNS 會根據這些策略綜合地理位置和線路狀況算出一個排序,優先訪問當前那些優質的、時延低的 IP 地址;
  • HTTPDNS 通過智能調度之后返回的結果,也會緩存在客戶端。為了不讓緩存使得調度失真,客戶端可以根據不同的移動網絡運營商 WIFI 的 SSID 來分維度緩存。不同的運營商或者 WIFI 解析出來的結果會不同;

7、OKHttp 接入 HTTPDNS

OkHttp 中使用 HTTPDNS,有兩種方式:

通過攔截器,在發送請求之前,將域名替換為 IP 地址;

通過 OkHttp 提供的 .dns() 接口,配置 HTTPDNS;

①攔截器接入

攔截器是 OkHttp 中,非常強大的一種機制,它可以在請求和響應之間,做一些我們的定制操作;

在 OkHttp 中,可以通過實現 Interceptor 接口,來定制一個攔截器。使用時,只需要在 OkHttpClient.Builder 中,調用 addInterceptor() 方法來注冊此攔截器即可;

  1. class HTTPDNSInterceptor : Interceptor{ 
  2.     override fun intercept(chain: Interceptor.Chain): Response { 
  3.         val originRequest = chain.request() 
  4.         val httpUrl = originRequest.url() 
  5.         val url = httpUrl.toString() 
  6.         val host = httpUrl.host() 
  7.         val hostIP = HttpDNS.getIpByHost(host) 
  8.         val builder = originRequest.newBuilder() 
  9.         if(hostIP!=null){ 
  10.             builder.url(HttpDNS.getIpUrl(url,host,hostIP)) 
  11.             builder.header("host",hostIP) 
  12.         } 
  13.         val newRequest = builder.build() 
  14.         val newResponse = chain.proceed(newRequest) 
  15.         return newResponse 
  16.     } 

在攔截器中,使用 HttpDNS 這個幫助類,通過 getIpByHost() 將 Host 轉為對應的 IP;

②OKHttp 標準 API 接入

OkHttp 其實本身已經暴露了一個 Dns 接口,默認的實現是使用系統的 InetAddress 類,發送 UDP 請求進行 DNS 解析;

我們只需要實現 OkHttp 的 Dns 接口,即可獲得 HTTPDNS 的支持。

在我們實現的 Dns 接口實現類中,解析 DNS 的方式,換成 HTTPDNS,將解析結果返回;

  1. class HttpDns : Dns { 
  2.     override fun lookup(hostname: String): List<InetAddress> { 
  3.         val ip = HttpDnsHelper.getIpByHost(hostname) 
  4.         if (TextUtils.isEmpty(ip)) { 
  5.             //返回自己解析的地址列表 
  6.             return InetAddress.getAllByName(ip).toList()  
  7.         } else { 
  8.             // 解析失敗,使用系統解析 
  9.             return Dns.SYSTEM.lookup(hostname) 
  10.         } 
  11.     } 
  12. mOkHttpClient = httpBuilder 
  13.         .dns(HttpDns()) 
  14.         .build(); 

三、數據傳輸優化

客戶端與服務端經常進行著頻繁的數據傳輸,而數據傳輸又影響著用戶體驗,提出合理的優化建議

1、傳統的傳輸方案

在開始的時候,采用的是xml傳輸,這就要使用到Serializable/Parcelable序列化以及反序列化,其傳輸速度之慢,基本已經被遺棄,后來又出現了JSON序列化傳輸,其常用工具就是GSON和fastjson,但隨著時代的進步,json也體現出了局限性json的局限性主要體現在其是基于字符串的傳輸,在轉換的時候會生成大量JsonObject,然后轉化為字符串,送進流里面,然后傳輸,在服務端也要從流中取出,然后反序列化,一大堆繁瑣的過程,其也漸漸不適合當今傳輸數據的要求;

2、新的數據傳輸方式

  • 現在有如下選擇可以用Protocal Buffers:強大,靈活,但是對內存的消耗會比較大,并不是移動終端上的最佳選擇;
  • Nano-Proto-Buffers:基于Protocal,為移動終端做了特殊的優化,代碼執行效率更高,內存使用效率更佳;
  • FlatBuffers:這個開源庫最開始是由Google研發的,專注于提供更優秀的性能;

如下圖:

FlatBuffers幾乎從空間和時間復雜度上完勝其他技術

FlatBuffers是一個開源的跨平臺數據序列化庫,可以應用到幾乎任何語言(C++,C#,Go,Java,JavaScript,PHP,Python),最開始是Google為游戲或者其他對性能要求很高的應用開發的;

FlatBuffer的優點

FlatBuffer相對于其他序列化技術,例如XML,JSON,Protocol Buffers等,有哪些優勢呢?官方文檔的說法如下:

  • 直接讀取序列化數據,而不需要解析(Parsing)或者解包(Unpacking):FlatBuffer把數據層級結構保存在一個扁平化的二進制緩存(一維數組)中,同時能夠保持直接獲取里面的結構化數據,而不需要解析,并且還能保證數據結構變化的前后向兼容;
  • 高效的內存使用和速度:FlatBuffer 使用過程中,不需要額外的內存,幾乎接近原始數據在內存中的大小;
  • 靈活:數據能夠前后向兼容,并且能夠靈活控制你的數據結構
  • 很少的代碼侵入性:使用少量的自動生成的代碼即可實現;
  • 強數據類性,易于使用,跨平臺,幾乎語言無關;
  • JSON是Android中很常用的數據序列化技術,但卻很消耗內存,而FlatBuffer正好解決了這個問題,性能還更好了;

3、對于 Post 請求,Body 是用 Gzip 壓縮的,也就是請求的時候帶上 Gzip 請求頭,服務端返回的時候也加上 Gzip 壓縮,這樣數據流就是被壓縮過的。

四、網絡其他優化

1、網絡分級請求

(1)將網絡分成移動網絡、寬帶網絡、強網絡、弱網絡,不同的網絡環境對請求進行不同的處理,例如在移動網絡下需要進行下載任務時,停止或提示用戶,在弱網絡下對圖片的請求的區分等;

(2) 網絡狀態可以由TelephonyManager.getNetworkType()方法獲取到;

(3)對下載和上傳文件采用斷點續傳功能,不浪費用戶之前耗費的時間和流量;

2、流量使用優化

(1)局部更新 、分頁加載;

(2) 數據加載采用增量,有更新數據時才請求新數據,合并客戶端舊數據;

(3)盡量避免客戶端輪詢,采用服務端推送方式;

3、請求數據優化

(1)合并請求,可以將多個請求合并成一個接口請求

(2)壓縮請求數據

(3)精簡數據格式,只取需要的數據字段

4、連接優化

  • 啟用keep-alive,okhttp中已默認打開,但需要服務器支持;
  • 使用http2,使用keep-alive來緩存,通過http2來復用請求連接;
  • 復用連接池可以減少多個網絡請求下的連接建立的消耗,而且OkHttp已經默認幫我們實現了這些功能;
  • 復用連接的前提是同ip通道,如果每個請求都發送給不同的ip,那么連接池也復用不了;
  • 非Http2的使用完連接后(就是Http請求完成后),我們需要手動 關閉RealCall,否則下層代碼就要通過觸發GC回收來幫我們檢查和關閉;
  • 切換不同的域名,當一個連接失敗的時候用另一個域名進行連接;

總結

1、傳統的 DNS 有很多問題,例如解析慢、更新不及時。因為緩存、轉發、NAT問題導致客戶端誤會自己所在的位置和運營商,從而影響流量的調度;

2、HTTPDNS 通過客戶端 SDK 和服務端,通過 HTTP 直接調用解析 DNS 的方式,繞過了傳統 DNS 的這些缺點,實現了智能的調度;

3、關于連接優化還有很多知識點,后續整理出來會發表出;

4、優化部分我們講解了網絡相關的,下次會整理出圖片相關的知識點,一起學習一起進步,加油;

本文轉載自微信公眾號「Android開發編程」,可以通過以下二維碼關注。轉載本文請聯系Android開發編程公眾號。

責任編輯:姜華 來源: Android開發編程
相關推薦

2021-11-29 11:13:45

服務器網絡性能

2022-02-16 14:10:51

服務器性能優化Linux

2019-12-13 10:25:08

Android性能優化啟動優化

2021-07-27 20:51:02

AndroidDNS網絡

2013-02-20 14:32:37

Android開發性能

2013-09-17 10:32:08

Android性能優化數據庫

2017-01-15 15:13:37

Android性能優化優化點

2015-09-16 14:37:50

Android性能優化運算

2015-09-16 13:54:30

Android性能優化渲染

2015-09-16 15:48:55

Android性能優化電量

2018-01-09 16:56:32

數據庫OracleSQL優化

2009-06-30 11:23:02

性能優化

2017-03-29 14:44:20

網絡性能優化

2015-09-14 09:45:58

虛擬化網絡網絡性能

2019-09-25 08:03:21

Android加速Google

2017-12-23 14:38:41

Android編程開發優化

2019-09-25 08:25:49

RPC網絡通信

2023-04-10 11:18:38

前端性能優化

2011-06-14 11:14:10

性能優化代碼

2021-07-16 23:01:03

SQL索引性能
點贊
收藏

51CTO技術棧公眾號

欧美日韩不卡一区二区| 2014亚洲片线观看视频免费| 俺去了亚洲欧美日韩| 男女污污视频网站| 91精品久久久久久粉嫩| 国产一区在线精品| 97人人做人人爱| av电影网站在线观看| 99tv成人影院| 婷婷国产v国产偷v亚洲高清| 亚洲 日韩 国产第一区| 国产高清免费av| 亚洲欧美清纯在线制服| 久久黄色av网站| 国产黄色三级网站| 亚洲男人在线| 欧美日韩国产精品| 伊人久久大香线蕉午夜av| 成人午夜福利视频| 美美哒免费高清在线观看视频一区二区 | 中文在线观看av| 欧美日本免费| 中文字幕无线精品亚洲乱码一区| av漫画在线观看| 日韩成人在线一区| 精品久久久免费| 欧美日韩亚洲国产成人| 国产一区电影| 99久久综合精品| 2022国产精品| 国产精品午夜一区二区| 在线午夜精品| 久久久久久成人| 黑鬼狂亚洲人videos| 少妇精品久久久一区二区三区| 日韩欧美亚洲另类制服综合在线| 国产精品拍拍拍| 国产精品一区二区av影院萌芽| 亚洲精品视频观看| 亚洲欧美电影在线观看| 国产在线中文字幕| 久久久久久影视| 久久精品国产第一区二区三区最新章节| 99热这里只有精品9| 美女尤物国产一区| 国产第一区电影| 台湾佬中文在线| 亚洲欧美激情诱惑| 91av在线国产| 国产成人在线视频观看| 一区视频在线看| 高清欧美性猛交xxxx黑人猛交| 欧美色图亚洲视频| 正在播放日韩欧美一页| 久久网福利资源网站| 日韩一区二区三区四区视频| 国内精品久久久久久99蜜桃| 亚洲视频电影图片偷拍一区| 精品黑人一区二区三区观看时间| 国产劲爆久久| 日韩久久精品一区| yjizz视频| 国产精品调教| 精品视频一区在线视频| 久久精品国产亚洲av麻豆| 亚洲三级网址| 永久免费毛片在线播放不卡| 能直接看的av| 亚洲成人精品| 久久99热精品| 精品国产免费观看| 老**午夜毛片一区二区三区| 国产精品免费视频xxxx| 91久久精品无码一区二区| 狠狠色伊人亚洲综合成人| 91精品国产99久久久久久红楼| www精品国产| 白白色 亚洲乱淫| 欧美欧美一区二区| 日日夜夜精品一区| 一区二区三区四区在线| 免费看又黄又无码的网站| 国产网站在线| 欧美丝袜丝nylons| 少妇高潮一69aⅹ| 奇米777国产一区国产二区| 国产一区二区av| 国产67194| 亚洲影音先锋| 成人免费激情视频| 手机在线不卡av| 亚洲国产精品成人综合色在线婷婷| 中文字幕日韩精品一区二区| 日本精品600av| 色诱视频网站一区| 污污视频网站在线| 奇米影视777在线欧美电影观看| 这里只有视频精品| 精品人妻在线播放| 日韩二区三区四区| 99在线影院| 国产在线小视频| 一区二区在线观看av| 欧美成人精品欧美一级乱| 色综合久久久| 国产视频精品xxxx| 乱h高h女3p含苞待放| 欧美亚洲一区| 91久久伊人青青碰碰婷婷| 韩日在线视频| 亚洲图片一区二区| 天天干天天草天天| 天海翼精品一区二区三区| www.xxxx欧美| 天堂网中文字幕| 国产91精品免费| 亚洲欧洲一区二区福利| 亚洲人成在线网站| 欧美不卡一区二区三区| 成人性视频免费看| 性久久久久久| 精品亚洲一区二区三区四区五区高| 精品176二区| 91国偷自产一区二区三区观看| 中文字幕99页| 天天精品视频| 国产免费亚洲高清| 狠狠色伊人亚洲综合网站l| 亚洲电影一级黄| 97超碰免费在线观看| 第一会所亚洲原创| 国产成人高清激情视频在线观看| 成人免费一级视频| 亚洲一区二区三区四区在线| 天天av天天操| 99精品一区| 国产精品欧美在线| 国产三级视频在线| 色偷偷久久人人79超碰人人澡| av2014天堂网| 99视频在线精品国自产拍免费观看| 91精品国自产在线观看| 国产在线激情视频| 91精品久久久久久久99蜜桃| 美国精品一区二区| 男女性色大片免费观看一区二区 | 亚洲成人激情综合网| 日韩a一级欧美一级| 亚洲色图欧美| 91手机在线观看| 女同视频在线观看| 欧美不卡一区二区| 久久久久成人精品无码| 国产成人在线视频网站| youjizz.com在线观看| 一区二区日韩| 97色在线播放视频| 婷婷国产在线| 日韩欧美成人区| 中文字幕网站在线观看| 欧美a级理论片| 在线免费一区| 精品国产亚洲一区二区在线观看| 欧美www在线| 亚洲av无码一区二区乱子伦 | 中文字幕精品无| 国产日韩欧美高清| 永久免费的av网站| 亚洲精品成人无限看| 99在线影院| 色戒汤唯在线| 在线一区二区日韩| 99热这里只有精品5| 亚洲大片在线观看| 亚洲自拍偷拍一区二区 | 成人黄色午夜影院| 影院在线观看全集免费观看| 日韩精品一区二区三区中文不卡 | 最新国产拍偷乱拍精品| 久久精品国产第一区二区三区最新章节 | 日本男人操女人| 日韩精品一卡| 波多野结衣成人在线| 手机在线观看av网站| 尤物九九久久国产精品的特点 | 国产精品乡下勾搭老头1| 国产91沈先生在线播放| 九一成人免费视频| 成人av资源在线播放| 好看的中文字幕在线播放| 日韩精品亚洲元码| 国产精品视频在线观看免费| 亚洲成人av一区二区三区| 精品人伦一区二区三电影| 韩国av一区二区三区四区 | 色在线中文字幕| 日韩亚洲欧美成人| 四虎影视2018在线播放alocalhost| 欧美午夜不卡在线观看免费| 久草中文在线视频| 国产精品私人自拍| 中国免费黄色片| 麻豆精品在线播放| 欧美一级在线看| 午夜精品久久| 日韩欧美国产二区| 麻豆国产欧美一区二区三区r| 国产美女被下药99| 在线男人天堂| 美女啪啪无遮挡免费久久网站| 男人天堂亚洲二区| 日韩欧美久久一区| 伊人网视频在线| 福利二区91精品bt7086| 久久久精品国产sm调教| 国产精品另类一区| 天天躁日日躁aaaxxⅹ| 成人国产免费视频| 久久久精品视频国产| 三级成人在线视频| 黄色片视频在线免费观看| 午夜欧美精品| 日本一区二区三区四区五区六区| 国产精品嫩草影院在线看| 国产亚洲自拍偷拍| 亚洲精品18| 91手机在线观看| 国产一区二区高清在线| 国产精品视频网站| 日韩精选视频| 国产成人高清激情视频在线观看 | 色婷婷综合激情| 在线观看黄网站| 亚洲超碰精品一区二区| 青青草国产在线观看| 亚洲视频在线一区| 疯狂撞击丝袜人妻| 亚洲欧美一区二区视频| 大胸美女被爆操| 欧美高清在线精品一区| 久久美女免费视频| 中文字幕av资源一区| 四虎永久免费在线观看| 久久久午夜电影| 熟女少妇一区二区三区| 久久亚洲一区二区三区明星换脸| 国产激情视频网站| 久久综合av免费| 免费在线观看污| 国产欧美日本一区二区三区| 天天躁夜夜躁狠狠是什么心态| 久久久久国产精品免费免费搜索| www.自拍偷拍| 国产女主播一区| 中文字幕伦理片| 亚洲欧美在线视频观看| 尤物在线免费视频| 夜夜操天天操亚洲| 一级aaa毛片| 日韩欧美在线一区| 成人一级免费视频| 欧美久久高跟鞋激| www香蕉视频| 亚洲国产成人精品久久久国产成人一区| 日韩在线观看视频一区| 亚洲精品视频网上网址在线观看| 免费在线黄色电影| 日韩在线观看免费高清| 四虎影视国产在线视频| 91国在线精品国内播放| 成人激情综合| 91精品视频免费观看| 欧州一区二区三区| 精品不卡一区二区三区| 欧美猛男男男激情videos| 亚洲欧洲三级| 激情久久久久久| 激情五月开心婷婷| 国产最新精品精品你懂的| 影音先锋资源av| 久久精品亚洲麻豆av一区二区| 美女三级黄色片| 亚洲成人av在线电影| a片在线免费观看| 日韩美女一区二区三区四区| 户外极限露出调教在线视频| 伦理中文字幕亚洲| 成人免费直播| 91在线免费网站| 一区二区小说| 热久久最新网址| 视频一区二区三区在线| 国产人妻精品久久久久野外| 久久久久久久综合狠狠综合| 国产精品三区在线观看| 色综合久久久久网| av 一区二区三区| 亚洲性69xxxbbb| 超碰中文在线| 91美女片黄在线观看游戏| 日韩精品a在线观看91| 成人在线观看www| 日韩电影免费在线看| 9191在线视频| 国产精品嫩草影院com| 日韩精品在线免费视频| 欧美日韩美少妇| 男同在线观看| 97成人精品视频在线观看| 国产剧情一区二区在线观看| 日韩福利在线| 免费在线亚洲欧美| 亚洲v在线观看| 亚洲蜜臀av乱码久久精品| 中文字幕永久在线| 日韩av在线看| 国产后进白嫩翘臀在线观看视频| 国产精品视频一区二区三区四| 久久黄色影视| youjizz.com在线观看| 黄色日韩网站视频| 国精产品一区一区| 欧美综合在线视频| 天堂中文在线官网| 欧美老妇交乱视频| 小说区图片区亚洲| 亚洲欧洲国产精品久久| 日韩精品色哟哟| 亚洲乱码国产乱码精品精大量| 亚洲韩国一区二区三区| 99热在线只有精品| 美女少妇精品视频| 综合久草视频| 在线视频不卡一区二区| 捆绑调教一区二区三区| 亚洲精品国产精品国自| 91传媒视频在线播放| 肉丝一区二区| 欧美专区在线观看| 亚洲精品亚洲人成在线| 无码人妻精品一区二区三区在线| www.久久久久久久久| 日韩成人高清视频| 日韩av最新在线观看| 精精国产xxxx视频在线播放| 精品视频免费观看| 性感少妇一区| 男人的天堂官网| 欧美日韩一区二区三区四区 | 亚洲欧美成人一区二区三区| 国产精品伦理一区| 欧美精品中文字幕一区| 亚洲一区二区免费在线观看| 国产精品igao激情视频| 国产91精品露脸国语对白| 日韩精品一区二区三区国语自制| 亚洲精品wwww| 成人va天堂| 一区二区三区四区视频在线| 免费看欧美美女黄的网站| 日本一级片免费| 欧美一级理论性理论a| heyzo在线| 欧美黑人xxxxx| 老司机精品视频一区二区三区| 波多野结衣在线网址| 精品国产在天天线2019| 波多野结衣亚洲| 亚洲成人a**址| 国产精品一区二区男女羞羞无遮挡| av资源吧首页| 亚洲人成网站色ww在线| 欧美成a人片免费观看久久五月天| 日韩视频一二三| 成a人片国产精品| av手机天堂网| 欧美精品在线网站| 性欧美lx╳lx╳| 三级一区二区三区| 亚洲成人av在线电影| 国产日本在线视频| 亚洲最大福利视频网| 国产精品美女久久久| 美国黄色特级片| 亚洲成人精品av| 色猫猫成人app| 无码av天堂一区二区三区| 国产亚洲污的网站| 亚洲av无码国产综合专区| 日韩免费在线播放| 欧美三级不卡| 亚洲av综合一区二区| 日韩三级av在线播放| 美女福利一区二区 | 久久久777| 久久av红桃一区二区禁漫| 亚洲激情电影中文字幕| 亚洲最大的免费视频网站| 凹凸国产熟女精品视频| 亚洲日本乱码在线观看|