UIWebview без кэша - PullRequest
       3

UIWebview без кэша

20 голосов
/ 17 марта 2012

Я хочу загрузить веб-просмотр без кеша?

//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];
//URL Request Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
//Load the request in the UIWebView.
[kdgWebView loadRequest:requestObj];

Ответы [ 4 ]

37 голосов
/ 17 марта 2012

Objective-C:

// Remove and disable all URL Cache, but doesn't seem to affect the memory
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];

Дополнительную информацию можно найти в http://blog.techno -barje.fr / post / 2010/10/04 / UIWebView-secrets-part2-leaks-on-release /

Swift:

URLCache.shared.removeAllCachedResponses()
URLCache.shared.diskCapacity = 0
URLCache.shared.memoryCapacity = 0
13 голосов
/ 28 марта 2012

Вы можете изменить свою политику кэширования, используя код:

NSURLRequest *requestObj = [NSURLRequest requestWithURL:url 
                                        cachePolicy:NSURLRequestReloadIgnoringCacheData
                                    timeoutInterval: 10.0]; 
0 голосов
/ 02 сентября 2013

Я испробовал все эти решения, но ни одно из них не работает каждый раз.Моим основным тестом была html-страница с изображением, заданным в качестве фона на html-странице.Эта HTML-страница и изображение загружаются локально на мой iPad с помощью метода «sync», который я написал.Единственный способ сохранить кэш полностью сброшенным - это постоянно менять URL-адрес изображения на html-странице, чтобы каждый раз он считал его уникальным.Например, в моем html:

<body background="image.png?v123">

Таким образом, при каждом изменении страницы, которое я делаю, мне приходится обновлять номер версии:

<body background="image.png?v1234">

и т. Д. И т. Д.хочу, просто должно быть по-другому.

Ну, я устал от этого.Теперь, когда я загружаю контент локально, я вместо этого динамически изменяю имя содержащей папки.Так как эта папка является родительской и все мои ссылки относительны, это означает, что мне не нужно каждый раз редактировать мои html-файлы.Пока все работает нормально.Я хотел бы, чтобы эти другие методы были согласованы, так как было бы намного проще просто сбросить кэш.

Поэтому в моих запросах используется baseURL, который вызывает сброс моего кэша, а не строка запроса к моему URL или фону.изображение или файл CSS и т. д. и т. д.

NSString *myURL = @"index.html";
NSURL *baseURL = [NSURL fileURLWithPath:@"FULL_PATH_TO_DOCS/MYFOLDERV123"];
[myTargetWebView loadHTMLString:myURL baseURL:baseURL];
0 голосов
/ 31 декабря 2012

Я пытаюсь ответить на аналогичный вопрос здесь.Я надеюсь, что это было полезно для вас!Последнее решение работает для HTML, но не для изображений, CSS и JS, связанных в HTML.

Как очистить кэш UIWebView?

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