iOS开发中的数据缓存

1. 缓存的实现:

在iOS开发中缓存常常用 NSURLCache 来实现, 这个类提供了大量的操做缓存的方法.缓存

NSURLCache常见的方法:服务器

(1)得到全局缓存对象(不必手动建立)NSURLCache *cache = [NSURLCache sharedURLCache];网络

(2)设置内存缓存的最大容量(字节为单位,默认为512KB)- (void)setMemoryCapacity:(NSUInteger)memoryCapacity;code

(3)设置硬盘缓存的最大容量(字节为单位,默认为10M)- (void)setDiskCapacity:(NSUInteger)diskCapacity;对象

(4)硬盘缓存的位置:沙盒/Library/Caches内存

(5)取得某个请求的缓存- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request;ci

(6)清除某个请求的缓存- (void)removeCachedResponseForRequest:(NSURLRequest *)request;开发

(7)清除全部的缓存- (void)removeAllCachedResponses;rem

2. NSURLCache缓存策略:

typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
    NSURLRequestUseProtocolCachePolicy = 0,

    NSURLRequestReloadIgnoringLocalCacheData = 1,
    NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented
    NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,

    NSURLRequestReturnCacheDataElseLoad = 2,
    NSURLRequestReturnCacheDataDontLoad = 3,

    NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
  1. 一个网络请求, 先判断本地是否有缓存的信息, 若是有, 一方面从本地取出来展现到页面上去, 另外一方面用本地的数据和服务器端的数据作比较, 若是有新数据 ,则服务器返回新的数据, 若是没有新数据, 则无需返回新数据.
  2. 若是服务端有新数据, 清除全部本地缓存呢, 仍是 ???

缓存的注意事项:

缓存的设置须要根据具体的状况考虑,若是请求某个URL的返回数据:it

  (1)常常更新:不能用缓存!好比股票、彩票数据

  (2)一成不变:果断用缓存

  (3)偶尔更新:能够按期更改缓存策略 或者 清除缓存

提示:若是大量使用缓存,会越积越大,建议按期清除缓存

相关文章
相关标签/搜索