`

ios url缓存策略——NSURLCache、 NSURLRequest

 
阅读更多

一:url 缓存策略

 

NSURLRequest

 

 

requestWithURL:cachePolicy:timeoutInterval:

 

1:NSURLRequestUseProtocolCachePolicy


This flag will use the underlying protocol’s caching mechanism if the protocol
supports it.

 

基础策略

 

2:NSURLRequestReloadIgnoringLocalCacheData


This flag specifies that the local cached copy of the resource that is about to be
downloaded must be disregarded and the remote cache policy must be effective.
If there is a local copy of the resource, managed by the framework itself, it will be
ignored.

 

忽略本地缓存

 

 

3:NSURLRequestReturnCacheDataElseLoad

 


This flag specifies that the cached data must be used before attempting to load the
data from the original source. The cached data could be protocol-based cached or
locally cached. If there is no cached data, the data will be downloaded from the
original source.

 

首先使用缓存,如果没有本地缓存,才从原地址下载

 

 

4:NSURLRequestReturnCacheDataDontLoad


This flag specifies that only the local cached data must be used. If the data has not
been cached, the request will fail. This is a great flag to use whenever your application
wants to perform operations in offline mode (such as the Offline Mode in
web browsers).

 

使用本地缓存,从不下载,如果本地没有缓存,则请求失败。此策略多用于离线操作

 

5:NSURLRequestReloadIgnoringLocalAndRemoteCacheData


This flag disregards any type of caching involved in the process, local and remote,
and always attempts to download the data from the original source.

 

无视任何的缓存策略,无论是本地的还是远程的,总是从原地址重新下载

 

 

6:NSURLRequestReloadRevalidatingCacheData

 


This flag specifies that the original source of data must validate the local cache (if
any) before an attempt is made to download the data from the original source. If
there is a copy of the original source cached locally and the remote source specifies
that the cached data is valid, the data won’t be downloaded again. In any other
case, the data will be downloaded from the original source.

 

如果本地缓存是有效的则不下载。其他任何情况都从原地址重新下载

 

 

二:NSURLCache

 

NSURLCache *urlCache = [NSURLCache sharedURLCache];

 

 

In iOS, NSURLCache supports caching data only in memory and not
on disk.

 

(NSURLCache 仅支持内存缓存,不支持硬盘缓存)

 

 

 

- (void) downloadURL:(NSString *)paramURLAsString{

if ([paramURLAsString length] == 0){
	NSLog(@"Nil or empty URL is given");
	return;
}

/* Get the shared URL Cache object. No need to create a new one */
NSURLCache *urlCache = [NSURLCache sharedURLCache];

/* We will store up to 1 Megabyte of data into the cache */
[urlCache setMemoryCapacity:1*1024*1024];

/* For our request, we need an instance of NSURL so let's retrieve
that from the string that we created before */
NSURL *url = [NSURL URLWithString:paramURLAsString];

/* And this is our request */
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0f];

/* Try to get a cached response to our request.
This might come back as nil */
NSCachedURLResponse *response =[urlCache cachedResponseForRequest:request];

/* Do we have a cached response? */
if (response != nil){
	NSLog(@"Cached response exists. Loading data from cache...");
	[request setCachePolicy:NSURLRequestReturnCacheDataDontLoad];
}

self.connection = nil;

/* Start the connection with the request */
NSURLConnection *newConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
self.connection = newConnection;
[newConnection release];

}

 

 

 

 

 

 

分享到:
评论

相关推荐

    iOS系统缓存方面开发的相关基础

    iOS为`NSURLRequest`提供了七种缓存策略,但通常只会使用四种,其中`NSURLRequestReturnCacheDataElseLoad`是最常用的策略,它优先使用缓存,如果没有则从网络加载。 总之,iOS系统缓存开发涉及如何有效利用内存和...

    iOS开发缓存机制之—内存缓存机制

    总的来说,iOS的内存缓存机制通过`NSURLCache`和`NSURLRequest`的配合,提供了一种高效、灵活的方式,使得应用程序可以在本地存储和检索网络数据,从而提升性能和响应速度。开发者可以根据不同的场景选择合适的缓存...

    ios-iOS离线缓存.zip

    通过设置适当的缓存策略,比如NSURLRequest.UseProtocolCachePolicy,可以将服务器返回的响应缓存到本地,以便在离线状态下重用。 6. **第三方库**: 在 OfflineCache项目中,可能使用了一些第三方库来增强离线缓存...

    IOS应用源码——SimpleURLConnections2.rar

    1. 使用HTTP缓存策略,通过`NSURLRequest`的`cachePolicy`属性,可以控制是否使用本地缓存。 2. 设置超时时间,防止长时间等待导致的资源浪费。 3. 使用HTTPS协议,确保数据传输的安全性。 4. 添加自定义请求头或...

    IOS应用源码——UIWebViewBrowse.rar

    这个名为"IOS应用源码——UIWebViewBrowse.rar"的压缩包文件很可能包含了一个简单的iOS应用示例,该示例展示了如何使用UIWebView来浏览网页。让我们深入探讨一下UIWebView及其相关知识点。 **UIWebView介绍** ...

    IOS应用源码——类似Chrome浏览器的多页签视图.zip

    这个压缩包文件“IOS应用源码——类似Chrome浏览器的多页签视图.zip”提供了一个iOS应用程序的源代码,该程序实现了类似于Google Chrome浏览器的多标签页视图。这个源码示例对于iOS开发者,尤其是那些希望学习如何在...

    IOS应用源码——URLConnectionTest.rar

    《iOS应用源码——浅析URLConnectionTest》 在iOS开发中,掌握网络通信技术是至关重要的,而URLSession(原URLConnection)是苹果提供的一种基础网络请求框架,用于处理HTTP和其他互联网协议的通信。本篇文章将深入...

    iOS中的NSURLCache数据缓存类用法解析

    在IOS应用程序开发中,为了减少与服务端的交互...NSURLRequest需要一个缓存参数来说明它请求的url何如缓存数据的,我们先看下它的CachePolicy类型。    1、NSURLRequestUseProtocolCachePolicy NSURLRequest默认的cac

    NSURLRequest

    5. **缓存策略**:通过设置`NSURLRequest`的缓存策略,可以控制是否使用本地缓存,以及如何处理过期的缓存数据。 6. **网络状态检测**:`Reachability`类可以帮助你检测网络的可达性,以便在网络不可用时优雅地处理...

    IOS应用源码——Stumbler-0.04.1189413695.rar

    《iOS应用源码解析——深度探索Stumbler 0.04.1189413695版》 iOS应用开发是一项技术性强、细节丰富的任务,它需要开发者深入理解Objective-C或Swift编程语言,以及苹果的iOS SDK。今天我们将通过分析名为...

    IOS应用源码——webView控制器的一些常用控制.zip

    这个"IOS应用源码——webView控制器的一些常用控制.zip"文件提供了一组关于如何在iOS应用中有效控制和操作WebView的示例代码。下面我们将详细探讨这些知识点。 1. **UIWebView vs WKWebView**: iOS中的WebView主要...

    IOS应用源码——UIWebViewBrowse2.rar

    因此,需要考虑适当的优化措施,如缓存策略、异步加载、减少内存占用等。 8. **布局与样式**:在应用中,`UIWebView`需要适应不同屏幕尺寸,可能需要使用AutoLayout或Size Classes来处理布局问题。同时,如果加载的...

    NSURLCache让本地数据来代替远程UIWebView请求

    在iOS开发中,为了优化用户体验和减少网络流量,开发者经常需要缓存网络请求的数据,特别是对于UIWebView的加载内容。`NSURLCache`是苹果提供的一个关键类,它允许我们在本地存储HTTP和HTTPS请求的响应,以便在后续...

    iOS利用AFNetworking3.0——实现文件断点下载

    创建`NSURLSessionDownloadTask`时,我们需要提供请求(`NSURLRequest`)和两个Block:一个是下载进度回调,另一个是目标文件保存路径的决定Block。在下载进度回调Block中,你可以获取到`NSProgress`对象,它包含了`...

    iOS11 WKWebView 无法加载内容的解决方法

    let request = NSURLRequest.init(url: URL.init(string: urlStr)!) self.wkWebView.load(request as URLRequest) } else { let request = NSMutableURLRequest.init(url: URL.init(string: urlStr)!, ...

    浅谈iOS UIWebView对H5的缓存功能

    在 iOS 中,UIWebView 使用 NSURLRequest 来请求和加载 H5 页面,而 NSURLRequest 中有一个缓存策略,即 NSURLRequestUseProtocolCachePolicy。这意味着,UIWebView 会根据协议来确定是否使用缓存。如果协议支持缓存...

    UIWebView应用——自己动手写IOS浏览器

    【UIWebView应用——自己动手写iOS浏览器】 在iOS开发中,UIWebView是苹果提供的一款用于在应用程序内展示网页内容的组件。这篇博客“UIWebView应用——自己动手写IOS浏览器”将引导开发者创建一个简单的内置浏览器...

    iOS开发之UIWebView

    10. **缓存策略**: 可以通过`cachePolicy`属性调整缓存策略,如`NSURLRequest.UseProtocolCachePolicy`,`NSURLRequestReloadIgnoringLocalCacheData`等。 以上是关于“iOS开发之UIWebView”的基本知识点。实际项目...

    EVURLCache:NSURLCache子类,用于处理使用NSURLRequest的所有Web请求

    这是NSURLCache子类,用于处理使用NSURLRequest的所有Web请求。 (包括UIWebView) EVURLCache用于处理以下缓存策略: 即使没有互联网连接,该应用程序也必须能够正常运行。 从应用商店下载应用后,该应用必须立即...

Global site tag (gtag.js) - Google Analytics