webView中的图像缓存问题

| 我正在制作一个iPhone应用程序。 我正在从图形中创建图像,然后将其嵌入到HTML中以使用“ 0”方法将图像显示到webView中。 现在,图像首次显示良好。 当我对图形进行更改并且图像被重新捕获时,它仍然显示旧图像。 因此,基本上它不会更新图像。图像名称相同,并且较旧的图像已从“文档”目录中删除,但仍以某种方式显示了旧图像。 如何在webView中删除这种图像缓存?     
已邀请:
        我知道避免在本地html页面中缓存图像的最好方法是将其直接嵌入html或css     
        我解决此问题的方法是在图像名称中添加时间戳,以便每次生成的图像名称都是唯一的。这样,它始终会获取正确的图像。 希望这对某人有帮助。     
        正是webkit中的缓存导致了您的问题。 要解决此问题,您可能需要对http协议进行某些操作。也就是说,您应该设置正确的http响应相关的标头,例如
Expires
Age
Cache-Control
Last-Modified
。之后,Webkit将不再为您缓存图像。 如果您无权修改服务器上的标头,则可以使用“ 5”拦截响应,然后再将其发送到Webkit。 关键代码:
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    NSHTTPURLResponse *httpRes = (NSHTTPURLResponse *)response;
    NSMutableDictionary *headers = [[httpRes allHeaderFields] mutableCopy];
    [headers removeObjectForKey:@\"Expires\"];
    [headers removeObjectForKey:@\"Cache-Control\"];
    [headers removeObjectForKey:@\"Age\"];
    [headers removeObjectForKey:@\"Last-Modified\"];
    NSHTTPURLResponse *newRes = [[NSHTTPURLResponse alloc] initWithURL:[[connection originalRequest] URL]
                                                            statusCode:[httpRes statusCode]
                                                           HTTPVersion:@\"HTTP/1.1\"
                                                          headerFields:[headers copy]
                                 ];

    [self.client URLProtocol:self didReceiveResponse:[newRes copy] cacheStoragePolicy:NSURLCacheStorageNotAllowed];

}
参考: 使用HTTP缓存:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2.3 NSURLProtocol教程:http://devmonologue.com/ios/tutorials/nsurlprotocol-tutorial/     

要回复问题请先登录注册