这可以通过简单的 HTTP 标准响应来完成。
假设先前的响应如下所示:
{ status code: 200, headers {
"Accept-Ranges" = bytes;
Connection = "Keep-Alive";
"Content-Length" = 47616;
Date = "Thu, 23 Jul 2015 10:47:56 GMT";
"Keep-Alive" = "timeout=5, max=100";
"Last-Modified" = "Tue, 07 Jul 2015 11:28:46 GMT";
Server = Apache;
} }
现在使用下面的命令告诉服务器如果它没有被修改就不要发送日期。
NSURLSession
是一个可配置的容器,您可能需要使用 http 选项“IF-Modified-Since”
在下载资源之前使用以下配置类型,
NSURLSessionConfiguration *backgroundConfigurationObject = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"myBackgroundSessionIdentifier"];
[backgroundConfigurationObject setHTTPAdditionalHeaders:
@{@"If-Modified-Since": @"Tue, 07 Jul 2015 11:28:46 GMT"}];
例如,如果资源没有从上述设置日期更改,则将调用下面的委托
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) downloadTask.response;
if([httpResponse statusCode] == 304)
//resource is not modified since last download date
}
检查downloadTask.response
状态码是 304 .. 然后资源没有被修改并且资源没有被下载。
注意在某些地方保存上一次成功的完整下载日期以NSUserDefaults
在if-modifed-since中进行设置