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

iOS網絡加載圖片緩存策略之ASIDownloadCache緩存優化

移動開發 iOS
在我們實際工程中,很多情況需要從網絡上加載圖片,然后將圖片在imageview中顯示出來,但每次都要從網絡上請求,會嚴重影響用戶體驗,為了不是每次顯示都需要從網上下載數據,希望將圖片放到本地緩存,因此我們需要一個好的的緩存策略,今天我將我在項目工程中的實際經驗分享給大家,我這里主要介紹一下強大的ASIHTTPRequest的緩存策略,以及使用方法。

在我們實際工程中,很多情況需要從網絡上加載圖片,然后將圖片在imageview中顯示出來,但每次都要從網絡上請求,會嚴重影響用戶體驗,為了不是每次顯示都需要從網上下載數據,希望將圖片放到本地緩存,因此我們需要一個好的的緩存策略,今天我將我在項目工程中的實際經驗分享給大家,我這里主要介紹一下強大的ASIHTTPRequest的緩存策略,以及使用方法:

下面是具體步驟:

一、設置緩存策略

首先在SplitDemoAppDelegate委托代理中,實現如下代碼:

在SplitDemoAppDelegate.h文件中,代碼如下:

  1. #import <UIKit/UIKit.h> 
  2.  
  3.   @class ASIDownloadCache; 
  4.   
  5.  @interface SplitDemoAppDelegate : NSObject <UIApplicationDelegate,UITabBarControllerDelegate> { 
  6.   
  7.     UIWindow *_window; 
  8.  
  9.      ASIDownloadCache*_downloadCache;            //下載緩存策略 
  10.   
  11.  } 
  12.  
  13.  @property (nonatomic, retain) ASIDownloadCache*downloadCache; 
  14.  
  15.  @end 

在SplitDemoAppDelegate.m文件中,代碼如下:

  1. #import "SplitDemoAppDelegate.h" 
  2.  
  3. @implementation SplitDemoAppDelegate 
  4.   
  5.   @synthesize window=_window; 
  6.  
  7. @synthesize downloadCache = _downloadCache; 
  8.  
  9.  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions 
  10.   
  11.  { 
  12.  
  13.     //初始化ASIDownloadCache緩存對象 
  14.   
  15.    ASIDownloadCache *cache = [[ASIDownloadCache alloc] init]; 
  16.  
  17.     self.downloadCache = cache; 
  18.   
  19.    [cache release]; 
  20.  
  21.  
  22.     //路徑 
  23.   
  24.     NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
  25.  
  26.   NSString *documentDirectory = [paths objectAtIndex:0]; 
  27.   
  28.     //設置緩存存放路徑 
  29.   
  30.    [self.downloadCache setStoragePath:[documentDirectorystringByAppendingPathComponent:@"resource"]]; 
  31.   
  32.     //設置緩存策略 
  33.   
  34.      [self.downloadCache setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy]; 
  35.   
  36.      // Override point for customization after application launch. 
  37.   
  38.      [self.window makeKeyAndVisible]; 
  39.  
  40.     return YES; 
  41.  
  42.  } 
  43.   
  44.  
  45.  - (void)dealloc 
  46.  
  47.   
  48.      [_window release]; 
  49.   
  50.      [_downloadCache release]; 
  51.   
  52.     [super dealloc]; 
  53.   
  54.  } 
  55.   
  56.  @end 

二、創建緩存線程

這一步是創建一個NSOperation類,實現緩存的方法,代碼如下:

ResourceContainer.h文件實現:

  1. #import <Foundation/Foundation.h> 
  2.   
  3.   #import "ASIHTTPRequest.h" 
  4.   
  5. #import "SplitDemoAppDelegate.h" 
  6.  
  7.  @interface ResourceContainer : NSOperation { 
  8.  
  9. NSURL*_resourceURL;            //資源請求url 
  10.   
  11.  NSObject*_hostObject;              
  12.  
  13.  SEL_resourceDidReceive;      //資源接手響應方法   
  14.  
  15.  SplitDemoAppDelegate*_appDelegate;            //應用委托對象 
  16.   
  17.  ASIHTTPRequest*_httpRequest;             
  18.   
  19.  UIImageView*_imageView;               
  20.  
  21.  } 
  22.   
  23.  
  24.  
  25.  @property (nonatomic, retain) NSURL*resourceURL; 
  26.  
  27. @property (nonatomic, retain) NSObject*hostObject; 
  28.  
  29.  @property (nonatomic, assign) SELresourceDidReceive; 
  30.   
  31.  @property (nonatomic, assign) SplitDemoAppDelegate   *appDelegate; 
  32.   
  33.  @property (nonatomic, retain) ASIHTTPRequest*httpRequest; 
  34.  
  35.  @property (nonatomic, retain) UIImageView*imageView; 
  36.  
  37.    
  38.  
  39.  //http請求回調方法 
  40.  
  41.  -(void)didStartHttpRequest:(ASIHTTPRequest *)request; 
  42.   
  43.  -(void)didFinishHttpRequest:(ASIHTTPRequest *)request; 
  44.  
  45.  -(void)didFailedHttpRequest:(ASIHTTPRequest *)request; 
  46.   
  47.   
  48.  
  49. //取消資源請求 
  50.  
  51.  -(void)cancelReourceGet; 
  52.   
  53.  //資源接收回調方法 
  54.  
  55.  -(void)resourceDidReceive:(NSData *)resource; 
  56.  
  57.  @end 

ResourceContainer.m文件實現:

  1. #import "ResourceContainer.h" 
  2.    #import "HttpConstant.h" 
  3.   #import "ASIDownloadCache.h" 
  4.  @implementation ResourceContainer 
  5.  @synthesize resourceURL = _resourceURL; 
  6.    @synthesize hostObject = _hostObject; 
  7.   @synthesize resourceDidReceive = _resourceDidReceive; 
  8.  @synthesize appDelegate = _appDelegate; 
  9.    @synthesize httpRequest = _httpRequest; 
  10.  @synthesize imageView = _imageView; 
  11.    
  12.   -(id)init{ 
  13.   
  14.       if(self == [super init]){ 
  15.    
  16.      self.appDelegate = (SplitDemoAppDelegate *)[[UIApplication        sharedApplication] delegate]; 
  17.   
  18.        } 
  19.   
  20.     return self; 
  21.    
  22.   } 
  23.    
  24.    
  25.   -(void)main{ 
  26.   
  27.       if(self.hostObject == nil) 
  28.       return
  29.    
  30.      if(self.resourceURL == nil){ 
  31.             [self resourceDidReceive:nil]; 
  32.            return
  33.       } 
  34.    
  35.        ASIHTTPRequest *request = [ASIHTTPRequest     requestWithURL:self.resourceURL] 
  36.       self.httpRequest = request; 
  37.  
  38.    
  39.   
  40.  [self.httpRequest setDownloadCache:self.appDelegate.downloadCache]; 
  41.   [self.httpRequest setDelegate:self]; 
  42.   [self.httpRequest setDidStartSelector:@selector(didStartHttpRequest:)]; 
  43.   [self.httpRequest setDidFinishSelector:@selector(didFinishHttpRequest:)]; 
  44.  [self.httpRequest setDidFailSelector:@selector(didFailedHttpRequest:)]; 
  45.  
  46.      //發異步請求 
  47.    
  48.  [self.httpRequest startAsynchronous]; 
  49.   
  50.  } 
  51.    
  52.  - (void)dealloc { 
  53.    
  54.  [_resourceURL release]; 
  55.  [_hostObject release]; 
  56.  [_httpRequest release]; 
  57.  [_imageView release]; 
  58.   [super dealloc]; 
  59.   
  60.  
  61.  //開始請求 
  62.  
  63.  -(void)didStartHttpRequest:(ASIHTTPRequest *)request{ 
  64.   
  65.   [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; 
  66.  
  67.   } 
  68.  
  69.   //請求成功返回處理結果 
  70.  
  71.   -(void)didFinishHttpRequest:(ASIHTTPRequest *)request{ 
  72.   
  73.  [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 
  74.   
  75.    
  76.  
  77.      if([request responseStatusCode] == 200 || [request responseStatusCode] == 304){ 
  78.  
  79.  //判斷是否來自緩存 
  80.  
  81.          if([request didUseCachedResponse]){ 
  82.   
  83.   NSLog(@"=========資源請求:%@ 來自緩存============",[self.resourceURL absoluteURL]); 
  84.    
  85.         } 
  86.          else
  87.              NSLog(@"=========資源請求:圖片不來自緩存============"); 
  88.         } 
  89.   
  90.   
  91.       [self resourceDidReceive:[request responseData]]; 
  92.  
  93.  } 
  94.   
  95.  else { 
  96.  
  97.         [self resourceDidReceive:nil]; 
  98.  
  99.         } 
  100.  
  101.   
  102.  //失敗請求返回處理結果 
  103.  
  104.  -(void)didFailedHttpRequest:(ASIHTTPRequest *)request{ 
  105.  
  106. [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; 
  107.   
  108.  [self resourceDidReceive:nil]; 
  109.  
  110.  
  111. //取消資源請求 
  112.  
  113.  -(void)cancelReourceGet{ 
  114.  
  115.  [self.httpRequest cancel]; 
  116.  
  117.  } 
  118.  
  119.  //資源接收處理方法 
  120.  
  121.  -(void)resourceDidReceive:(NSData *)resource{ 
  122.  
  123.  if([self.hostObject respondsToSelector:self.resourceDidReceive]){ 
  124.  
  125.  if(resource != nil && self.imageView != nil){ 
  126.  
  127.  self.imageView.image = [UIImage imageWithData:resource]; 
  128.  
  129.  
  130.   
  131.  [self.hostObject performSelectorOnMainThread:self.resourceDidReceive withObject:self.imageViewwaitUntilDone:NO]; 
  132.   
  133.   
  134.  } 
  135.  
  136.  @end  

到第二步,我們的緩存策略的設置,以及資源請求和接收數據方法已經構建完畢,下面介紹一下如何使用我們上面創建的NSOperation類

三、圖片請求(利用上面創建的類)

這里以我的工程為例進行分析:

在DetailViewController.h聲明文件中:

  1. #import <UIKit/UIKit.h> 
  2.   
  3.   @interface DetailViewController :UIViewController { 
  4.   
  5.     NSURL                         *_imageURL;                    //圖片url 
  6.   
  7.     NSMutableArray            *_originalIndexArray;        //保存請求圖片的號 
  8.  
  9.     NSMutableDictionary     *_originalOperationDic;     //保存圖片請求隊列 
  10.  
  11.     NSOperationQueue        *_requestImageQueue;    //圖片請求隊列 
  12.  
  13.  
  14. @property (nonatomic, retain) NSURL                       *imageURL; 
  15.  @property (nonatomic, retain) NSMutableArray          *originalIndexArray; 
  16.  @property (nonatomic, retain) NSMutableDictionary   *originalOperationDic; 
  17.  @property (nonatomic, retain) NSOperationQueue      * requestImageQueue; 
  18.  
  19.  //顯示圖片信息 
  20.   
  21.  -(void)displayProductImage; 
  22.   
  23. //根據圖片序號顯示請求圖片資源 
  24.   
  25.  -(void)displayImageByIndex:(NSInteger)index ByImageURL:(NSURL *)url; 
  26.   
  27.  //處理圖片請求返回信息 
  28.  
  29.  -(void)imageDidReceive:(UIImageView *)imageView; 
  30.  
  31.  @end 

在DetailViewController.m實現文件中:

  1. #import "ProductDetailViewController.h" 
  2.    
  3.   //這里引入在第二步中,我們創建的對象 
  4.   #import "ResourceContainer.h" 
  5.   
  6.   @implementation DetailViewController 
  7.    @synthesize imageURL = _imageURL; 
  8.   @synthesize originalIndexArray = _originalIndexArray; 
  9.   @synthesize originalOperationDic = _originalOperationDic; 
  10.  @synthesize requestImageQueue = _requestImageQueue; 
  11.  
  12.   
  13.  - (void)viewDidLoad 
  14.  
  15.  { 
  16.   
  17.     [super viewDidLoad]; 
  18.       NSOperationQueue *tempQueue = [[NSOperationQueue alloc] init]; 
  19.   
  20.       self.requsetImageQueue = tempQueue; 
  21.       [tempQueue release]; 
  22.   
  23.        NSMutableArray *array = [[NSMutableArray alloc] init]; 
  24.  
  25.        self.originalIndexArray = array; 
  26.       [array release]; 
  27.   
  28.         NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; 
  29.    
  30.         self.originalOperationDic = dic; 
  31.          [dic release]; 
  32.    
  33.   } 
  34.    
  35.  //顯示圖片信息 
  36.    
  37.   -(void)displayProductImage 
  38.   
  39.   { 
  40.   
  41.      NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.xxx.xxx"]; 
  42.  
  43.       //這個是從器返回有圖片數目,self.xxxx根據具體的場合 
  44.    
  45.       int imageCount = [self.xxxx.imageNum intValue]; 
  46.    
  47.       for (int i=0; i<imageCount; i++) { 
  48.    
  49.           NSString *str1 = @"這里是拼圖片請求url,根據實際需求"
  50.   
  51.          self.imageURL = [url URLByAppendingPathComponent:str1]; 
  52.   
  53.          //根據圖片號請求資源 
  54.   
  55.          [self displayImageByIndex:i ByImageURL:self.productImageURL]; 
  56.    
  57.      } 
  58.  
  59.  } 
  60.  
  61.   //根據圖片序號顯示請求圖片資源 
  62.   
  63. -(void) displayImageByIndex:(NSInteger)index ByImageURL:(NSURL *)url 
  64.   
  65.   { 
  66.   
  67.     NSString *indexForString = [NSString stringWithFormat:@"%d",index]; 
  68.   
  69.       //若數組中已經存在該圖片編號,說明圖片加載完畢,直接返回 
  70.  
  71.     if ([self.originalIndexArray containsObject:indexForString]) { 
  72.   
  73.          return
  74.  
  75.      } 
  76.  
  77.      //創建UIImageView對象 
  78.   
  79.     UIImageView *imageView = [[UIImageView alloc] init]; 
  80.  
  81.      imageView.tag = index; 
  82.    
  83.     //創建資源請求對象 
  84.  
  85.      ResourceContainer  *imageOperation = [[ResourceContainer alloc] init]; 
  86.   
  87.       imageOperation.resourceURL = url; 
  88.  
  89.     imageOperation.hostObject = self; 
  90.  
  91.      //設置收到圖片信息處理理方法 
  92.  
  93.      imageOperation.resourceDidReceive = @selector(imageDidReceive:); 
  94.   
  95.     imageOperation.imageView = imageView; 
  96.   
  97.     [imageView release]; 
  98.  
  99.      //將圖片請求對象加入圖片請求隊列中 
  100.  
  101.     [self.requsetImageQueue addOperation:imageOperation]; 
  102.  
  103.     [self.originalOperationDic setObject:imageOperation forKey:indexForString]; 
  104.  
  105.     [imageOperation release]; 
  106.  
  107.   
  108. //處理圖片請求返回信息 
  109.  
  110.  -(void)imageDidReceive:(UIImageView *)imageView 
  111.  
  112.  { 
  113.  
  114.      if (imageView == nil||imageView.image == nil) { 
  115.  
  116.             imageView.image = [UIImage imageNamed:@"no-pic-300-250.png"]; 
  117.  
  118.      } 
  119.   
  120.      //將圖片信息加載到前臺,self.openFlowView是我用的coverFlow,coverFlow的使用方法網上很多,自己找吧 
  121.  
  122.      [self.openFlowView setImage:imageView.image forIndex:imageView.tag]; 
  123.  
  124.     [self.originalIndexArray addObject:[NSString stringWithFormat:@"%d",imageView.tag]]; 
  125.  
  126.     [self.originalOperationDic removeObjectForKey:[NSString stringWithFormat:@"%d",imageView.tag]]; 
  127.  
  128.  } 
  129.  
  130. - (void)dealloc 
  131.  
  132.  { 
  133.       [_requestImageQueue release]; 
  134.   
  135.      [_originalIndexArray release]; 
  136.  
  137.      [_originalOperationDic release]; 
  138.  
  139.      [_imageURL release]; 
  140.  
  141.      [super dealloc]; 
  142.  
  143.  
  144. @end 

經過上述步驟,我們實現了加載網絡圖片時緩存功能,增強了用戶體驗效果。代碼中可能會有諸多問題,希望網友指教,有更好的緩存方法,也希望一起交流!

責任編輯:張葉青 來源: 博客
相關推薦

2015-06-11 10:12:26

Android圖片加載緩存

2022-05-10 08:58:56

CacheHTTP

2023-11-16 08:22:14

LruCacheAndroid

2014-04-17 10:56:40

優化策略MySQL緩存

2021-03-29 11:51:07

緩存儲存數據

2011-10-19 09:41:15

ASP.NET性能優化

2020-06-11 13:03:04

性能優化緩存

2019-03-20 09:11:50

Web緩存策略

2011-10-17 09:54:18

ASP.NET性能

2015-10-08 16:40:50

緩存頭像策略

2013-10-16 16:17:15

iOS開發優化方案

2009-08-03 18:47:12

ASP.NET數據緩存

2024-07-23 08:06:19

緩存技術策略

2018-03-27 09:28:33

緩存策略系統

2015-12-16 12:40:32

H5緩存機制移動

2025-02-03 00:00:35

2024-06-28 08:31:54

2020-07-16 08:04:21

瀏覽器緩存策略

2024-05-06 12:20:00

緩存驅逐緩存

2023-05-04 16:10:13

緩存前端
點贊
收藏

51CTO技術棧公眾號

中文字幕第38页| 波多野结衣精品久久| 国产精品亚洲无码| 福利一区二区免费视频| 亚洲精品国产精品乱码不99| 久久久久一区二区三区| 中文在线a天堂| 国产综合精品| 中文字幕一精品亚洲无线一区 | 日韩在线第一区| 国产老女人乱淫免费| 一区二区高清| 美女久久久久久久久久久| 欧类av怡春院| www.久久.com| 欧美日韩亚洲一区二| 少妇熟女一区二区| 色中色在线视频| 国产一区二区三区在线观看免费| 欧美一级黑人aaaaaaa做受| 一级黄色片日本| 亚洲黄页网站| 日韩欧美国产麻豆| 超碰影院在线观看| 成人免费网址| 国产精品理伦片| 日本一区二区在线| 特黄视频在线观看| 国产成人丝袜美腿| 成人有码视频在线播放| 伊人成年综合网| 亚洲精品色图| 欧美激情二区三区| 永久看片925tv| 91综合在线| 深夜福利一区二区| 欧美色图亚洲激情| 精品国内亚洲2022精品成人| 日韩欧美一区二区视频| 一级黄色特级片| 天堂av在线| 激情av一区二区| 日韩欧美国产综合在线| 色操视频在线| 亚洲免费av观看| 中文网丁香综合网| 在线免费观看黄| 国产色产综合色产在线视频| 亚洲午夜激情av| 啪啪av大全导航福利综合导航| 久久久久成人网站| www.日韩| 欧美日韩国产页| 和岳每晚弄的高潮嗷嗷叫视频| 五月婷婷视频在线观看| 亚洲乱码一区二区三区在线观看| 在线丝袜欧美日韩制服| 北条麻妃在线| 国产精品色在线| 亚洲福利av| 欧美13一16娇小xxxx| 亚洲国产高清在线| 伊甸园精品99久久久久久| 伊人免费在线| 亚洲日本在线a| 白白操在线视频| 2021天堂中文幕一二区在线观| 一区二区三区欧美久久| 日韩亚洲欧美一区二区| 网爆门在线观看| 国产欧美视频在线| 欧美一区二区日韩一区二区| 日韩高清在线一区二区| 免费精品一区二区三区在线观看| 日韩美女天天操| av免费观看不卡| 神马香蕉久久| 综合136福利视频在线| 欧美精品videosex性欧美| 91精品国产自产在线观看永久| 毛片视频网站在线观看| 日韩精品一级二级| 国产精品久久久久久久久久小说| ,亚洲人成毛片在线播放| 国产一区二区日韩精品| 国产亚洲二区| 永久免费看mv网站入口| 久草国产精品视频| 狠狠做六月爱婷婷综合aⅴ| 伊人伊人伊人久久| 久久福利免费视频| 亚洲黄页一区| 国产精品亚洲网站| 亚洲国产精品久久人人爱潘金莲| 97久久超碰精品国产| 有码一区二区三区| 丝袜美腿成人在线| 国产精品中文字幕亚洲欧美| 欧美日韩在线精品一区二区三区激情综合| 久久久九九九九| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 国产在线二区| 最好看的日本字幕mv视频大全| 天堂a√在线| 久久中文字幕电影| 特级毛片在线免费观看| 91色在线看| 欧美日韩精品福利| 亚洲精品女人久久久| 亚洲女同中文字幕| 热久久视久久精品18亚洲精品| 国产成人a人亚洲精品无码| 99久久er热在这里只有精品66| 亚洲午夜精品久久| 天堂中文在线播放| 69p69国产精品| 国产熟妇搡bbbb搡bbbb| 午夜久久影院| 国产精品私拍pans大尺度在线 | 性久久久久久| 91香蕉亚洲精品| 福利视频在线导航| 精品国产91久久久久久老师| 手机av在线网站| 国产乱码精品一区二区亚洲| 久久免费视频在线观看| 一区二区国产欧美| 久久九九久久九九| 成人免费aaa| 91在线一区| 久久影视电视剧免费网站清宫辞电视| 国产免费a视频| 91麻豆免费看| 黄色大片在线免费看| 天堂精品在线视频| zzijzzij亚洲日本成熟少妇| 91porny九色| 久久噜噜亚洲综合| 欧美日韩在线视频一区二区三区| www.丝袜精品| 欧美精品激情视频| 亚洲精品国产精品乱码不卡| 亚洲精品中文字幕在线观看| 天天做天天干天天操| 欧美大片aaaa| 国产综合色香蕉精品| а√天堂中文在线资源bt在线| 色乱码一区二区三区88| 成人免费毛片糖心| 久久一区视频| 日韩国产美国| av亚洲一区| 日韩中文字幕网址| 国产精品老熟女视频一区二区| 中文字幕一区二区三区乱码在线 | 国产在线播放一区| 9999在线观看| 精品国产麻豆| 久久综合亚洲社区| 国产黄色一区二区| 亚洲午夜三级在线| 久久久久久久人妻无码中文字幕爆| 欧美精选在线| 精品乱码一区| 日韩av免费| 日韩视频免费在线| 精品国产18久久久久久| 亚洲午夜在线视频| 亚洲天堂成人av| 三级欧美韩日大片在线看| 色一情一乱一伦一区二区三欧美| 成人免费在线观看视频| 久久久国产成人精品| 99热这里只有精品5| 亚洲一区二区三区视频在线播放| 国产成人无码一区二区在线观看| 麻豆九一精品爱看视频在线观看免费| 欧美一区视久久| 91九色成人| 久久视频在线观看免费| 欧美 日韩 中文字幕| 一本一本久久a久久精品综合麻豆| 黄色三级生活片| 国产一区二区女| 男人添女人下面高潮视频| 国产剧情在线观看一区| 91美女福利视频高清| av资源中文在线天堂| 一道本无吗dⅴd在线播放一区 | 国产视频久久久久久久| 在线观看免费视频a| 亚洲国产中文字幕| 五月天精品在线| 懂色av一区二区夜夜嗨| 无码无遮挡又大又爽又黄的视频| 91精品国产成人观看| 精品亚洲欧美日韩| 9999在线精品视频| 欧美一级淫片aaaaaaa视频| 三区四区电影在线观看| 亚洲精品国产精品乱码不99按摩| 888奇米影视| 欧美日韩午夜激情| 国产一区二区精彩视频| 久久精子c满五个校花| 国产精品熟妇一区二区三区四区| 奇米一区二区三区av| 欧美一级视频在线播放| 91综合网人人| 日韩国产精品一区二区三区| 久久九九热re6这里有精品| 成人a视频在线观看| 亚洲最新无码中文字幕久久| 欧美另类交人妖| 91网在线播放| 亚洲美女视频网站| 亚洲一区二区天堂| 色综合激情五月| 亚洲欧美在线观看视频| 亚洲日本一区二区三区| 91大神福利视频| 国产亚洲美州欧州综合国| 国产精品久久无码| 国产99久久久国产精品| 一路向西2在线观看| 美国一级片在线免费观看视频| 亚洲成va人在线观看| 岛国片在线免费观看| 久久久久久久性| 久久久久9999| 成av人片一区二区| 第一页在线视频| 国产一区二区三区av电影| 五月天视频在线观看| 日韩不卡一区二区三区| 国产精品无码专区av在线播放 | 国内精品一区二区三区四区| 超碰超碰在线| 欧美刺激性大交免费视频| 欧美一区二区三区在线观看免费| 伊人久久久久久久久久| 国产中文字幕在线看| 日韩理论片久久| 深夜福利视频在线免费观看| 亚洲激情电影中文字幕| 天天干,夜夜爽| 亚洲黄色在线观看| 五月天婷婷社区| 日韩精品免费在线视频观看| 日本精品一二区| 亚洲第一区在线| 肉丝一区二区| 亚洲色图15p| av在线三区| 久久亚洲私人国产精品va| 国产淫片在线观看| 欧美大片网站在线观看| 国产啊啊啊视频在线观看| 97久久伊人激情网| 天堂中文av在线资源库| 国产精品 欧美在线| 国产美女久久| 亚洲xxxx在线| 老牛精品亚洲成av人片| 久久精品日产第一区二区三区精品版| 女人丝袜激情亚洲| 先锋在线资源一区二区三区| 91一区二区| 久久99久久久久久| 性xx色xx综合久久久xx| 中文av一区二区三区| 国产成人午夜精品影院观看视频 | www.这里只有精品| 国产麻豆精品在线观看| 麻豆精品国产传媒av| 国产亚洲欧美一区在线观看| jizzjizz日本少妇| 一区二区成人在线| 国产成人愉拍精品久久| 色久综合一二码| 国产成年妇视频| 亚洲乱码国产乱码精品精天堂| 欧美激情黑人| 午夜精品一区二区三区在线视| 欧美片第1页| 亚洲综合中文字幕在线观看| 日韩av网址大全| 中文字幕色一区二区| 99成人在线| 日本中文字幕二区| 99久久久久久| 麻豆视频在线免费看| 精品色蜜蜜精品视频在线观看| 一本久道久久综合无码中文| 亚洲电影av在线| 日韩精品成人av| 96精品视频在线| 国产精品久久久久久久久久辛辛| 精品日本一区二区三区| 91tv官网精品成人亚洲| 热99这里只有精品| 国产剧情一区在线| 成人午夜福利一区二区| 亚洲午夜精品久久久久久久久| 中文字幕在线2018| 精品视频久久久久久| 成人av福利| 国产精品一区二区久久国产| 欧美激情久久久久久久久久久| 在线一区亚洲| 日韩av高清在线观看| 日本网站在线看| 天天操天天色综合| 91高潮大合集爽到抽搐| 亚洲国产精品电影| caoporn免费在线视频| 国产精品视频一| 香蕉久久精品| 男人天堂av片| 国精产品一区一区三区mba桃花 | 国产精品久久久久久久免费 | 久久精品日韩| 欧美激情视频一区二区三区免费| 黑人粗进入欧美aaaaa| 波多野结衣精品在线| 九九视频免费观看| 欧美精品在线观看一区二区| 国产专区在线| 国产成人精品综合| 日韩大胆成人| 福利视频一二区| eeuss影院一区二区三区| 91porn在线视频| 欧美一级黄色大片| 呦呦在线视频| 91视频在线免费观看| 欧美在线三级| 日本黄色一级网站| 亚洲视频一区在线观看| 一区二区三区免费在线| 一本一本久久a久久精品综合小说| 日韩性xxx| 日韩欧美三级电影| 日韩精品一级二级 | 国产精品爱久久久久久久| 在线成人动漫av| 午夜免费精品视频| 国产欧美日韩视频在线观看| 自拍偷拍第八页| 自拍视频国产精品| 99精品女人在线观看免费视频| 色涩成人影视在线播放| 久久99日本精品| 午夜爽爽爽男女免费观看| 欧美一级二级三级蜜桃| 色综合999| 精品一卡二卡三卡四卡日本乱码| 99国产精品自拍| 成人国产精品久久久网站| 91福利视频网站| 午夜免费播放观看在线视频| 91久久精品在线| 精品999日本| 人妻大战黑人白浆狂泄| 欧亚洲嫩模精品一区三区| 免费黄网在线观看| 99精彩视频| 亚洲一区一卡| 天堂资源在线视频| 日韩欧美一区二区视频| 欧美aaaaa性bbbbb小妇| 午夜一区二区三视频在线观看| 国产乱淫av一区二区三区| 伊人365影院| 国产亚洲精品一区二区| 欧美久久久网站| aa视频在线播放| 欧美国产日韩精品免费观看| 国产美女无遮挡永久免费| 国产+成+人+亚洲欧洲| 教室别恋欧美无删减版| 亚洲一二三不卡| 日韩欧美在线第一页| 午夜视频在线| av在线不卡一区| 日日夜夜精品视频免费| 免费人成在线观看| 亚洲精品中文字幕av| 国产精品视频一区视频二区| 久久成人免费观看| 国产精品网站导航| 免费看黄网站在线观看| 国产精品久久99久久| 欧美视频福利| 日日操免费视频| 亚洲精品视频网上网址在线观看 | 亚洲国产天堂久久综合| 国产成人亚洲一区二区三区| 日韩xxxx视频| 亚洲欧洲成人自拍|