Проблема с кэшированием изображений в webView - PullRequest
0 голосов
/ 25 июня 2011

Я создаю приложение для iPhone.

Я создаю изображение из графика, а затем встраиваю его в HTML для отображения изображения в webView, используя метод loadHTMLString:baseURL:.

Сейчасизображение отображается нормально в первый раз.

Когда я делаю изменения в графике и изображение повторно захватывается, оно все равно показывает старое изображение.

Так что в основном это не обновляет изображение.Имя изображения такое же, и старое изображение удаляется из каталога «Документы», но оно все равно каким-то образом показывает старое изображение.

Как я могу удалить этот вид кэширования изображений в webView?

Ответы [ 3 ]

0 голосов
/ 03 июля 2011

Я решил эту проблему, добавив метку времени вместе с именем изображения, чтобы каждый раз создаваемое имя изображения было уникальным.Таким образом, он всегда выбирает правильное изображение.

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 23 июля 2014

Это кеш в webkit, который приводит к вашей проблеме.

Чтобы решить эту проблему, вам, возможно, придется что-то делать с http-протоколом. Другими словами, вы должны установить правильный заголовок HTTP-ответа, связанный с кэшем, например Expires, Age, Cache-Control, Last-Modified. После этого webkit больше не будет кэшировать изображения для вашего.

Если у вас нет разрешения на изменение заголовка на сервере, вы можете использовать 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];

}

Ссылка:

0 голосов
/ 25 июня 2011

Лучший способ избежать кэширования изображений на локальных html-страницах - это вставить их непосредственно в html или css

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...