【问题标题】:Image caching problem in webViewwebView中的图像缓存问题
【发布时间】:2011-09-22 13:22:05
【问题描述】:

我正在制作一个 iPhone 应用程序。

我正在从图表中创建一个图像,然后将其嵌入到 HTML 中,以使用loadHTMLString:baseURL: 方法将图像显示到 webView 中。

现在图像第一次正常显示。

当我对图表进行更改并重新捕获图像时,它仍然显示旧图像。

所以基本上它不会更新图像。图像名称相同,旧图像已从 Documents 目录中删除,但仍以某种方式显示旧图像。

如何在 webView 中删除这种图像缓存?

【问题讨论】:

    标签: iphone objective-c cocoa-touch ios4 uiwebview


    【解决方案1】:

    我知道避免在本地 html 页面中缓存图像的最佳方法是将它们直接嵌入到 html or css

    【讨论】:

      【解决方案2】:

      我解决这个问题的方法是添加时间戳和图像名称,这样每次生成的图像名称都是唯一的。这样它总是能获取正确的图像。

      希望这对某人有所帮助。

      【讨论】:

        【解决方案3】:

        是 webkit 中的缓存导致了你的问题。

        要解决这个问题,您可能需要对 http 协议进行一些操作。也就是说,你应该正确设置你的http响应的缓存相关的header,比如ExpiresAgeCache-ControlLast-Modified。之后,webkit 将不再为你缓存图片。

        如果你没有权限修改服务器上的header,你可以使用NSURLProtocol在响应发送到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];
        
        }
        

        参考:

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-03
          • 1970-01-01
          • 2015-12-18
          • 1970-01-01
          • 1970-01-01
          • 2012-07-01
          • 2015-02-28
          • 2010-11-07
          相关资源
          最近更新 更多