Iphone 如何在MKNetworkKit或MKNetworkEngine中禁用缓存?
我试图使用MKNetworkEngine,但标题中提到了缓存。这对我的应用程序来说是完全不好的,它需要下载货币汇率JSON文件,缓存是不可能的Iphone 如何在MKNetworkKit或MKNetworkEngine中禁用缓存?,iphone,ios,ipad,networking,mknetworkengine,Iphone,Ios,Ipad,Networking,Mknetworkengine,我试图使用MKNetworkEngine,但标题中提到了缓存。这对我的应用程序来说是完全不好的,它需要下载货币汇率JSON文件,缓存是不可能的 有没有办法关闭整个MKNetworkEngine实例的缓存?第一件事:您真的确定缓存用例吗?大多数提供web服务的股票都将其缓存Pragma/ETags头设置为合理的值。如果他们这样做,MKNetworkKit将做正确的事情,并且只会对您的代码进行缓存命中响应(如果这对您的请求有效) 除非如此,您可以通过两种方法控制缓存的利用率。权利来源: 调用enqu
有没有办法关闭整个MKNetworkEngine实例的缓存?第一件事:您真的确定缓存用例吗?大多数提供web服务的股票都将其缓存Pragma/ETags头设置为合理的值。如果他们这样做,MKNetworkKit将做正确的事情,并且只会对您的代码进行缓存命中响应(如果这对您的请求有效) 除非如此,您可以通过两种方法控制缓存的利用率。权利来源: 调用
enqueoperation:forceReload:
,并将forceReload设置为YES
,即可完成此操作。像这样:
-(MKNetworkOperation *)myNetworkOperation onCompletion:(MYComplectionBlock)completionBlock onError:(MKNKErrorBlock)errorBlock {
MKNetworkOperation *op = [self operationWithPath:kURLPath params:nil httpMethod:@"GET" ssl:NO];
[op onCompletion:^(MKNetworkOperation *completedOperation) {
// handle the response
completionBlock(...)
} onError:^(NSError *error) {
errorBlock(error);
}];
[self enqueueOperation:op forceReload:YES];
return op;
}
此外,您还可以在[self-enqueueOperation:op]
子类内部调用[self-enqueueOperation:op]
明确清空缓存(注意,这意味着清空所有请求的缓存)
-(MKNetworkOperation *)myNetworkOperation onCompletion:(MYComplectionBlock)completionBlock onError:(MKNKErrorBlock)errorBlock {
MKNetworkOperation *op = [self operationWithPath:kURLPath params:nil httpMethod:@"GET" ssl:NO];
[op onCompletion:^(MKNetworkOperation *completedOperation) {
// handle the response
completionBlock(...)
} onError:^(NSError *error) {
errorBlock(error);
}];
[self emptyCache];
[self enqueueOperation:op];
return op;
}
我正在做forceReload:是的,但它仍然只从缓存中获取结果。当我这样做的时候:如果([op isCachedResponse])[self sendrequestreach];它每次都会给我缓存的数据。也许你在某种透明缓存代理的后面?
-(MKNetworkOperation *)myNetworkOperation onCompletion:(MYComplectionBlock)completionBlock onError:(MKNKErrorBlock)errorBlock {
MKNetworkOperation *op = [self operationWithPath:kURLPath params:nil httpMethod:@"GET" ssl:NO];
[op onCompletion:^(MKNetworkOperation *completedOperation) {
// handle the response
completionBlock(...)
} onError:^(NSError *error) {
errorBlock(error);
}];
[self emptyCache];
[self enqueueOperation:op];
return op;
}