UIwebview без кеша
Я хочу загрузить веб-просмотр без кеша?
//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];
Спасибо за помощь.
Жан.
Ответы
Ответ 1
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:
NSURLCache.sharedURLCache().removeAllCachedResponses()
NSURLCache.sharedURLCache().diskCapacity = 0
NSURLCache.sharedURLCache().memoryCapacity = 0
Ответ 2
Вы можете изменить политику кэша, используя код:
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval: 10.0];
Ответ 3
Я пытаюсь ответить на аналогичный вопрос здесь. Надеюсь, это было полезно для вас! Последнее решение работает для HTML, но не для изображений, css и js, связанных в html.
Как очистить кеш UIWebView?
Ответ 4
Я пробовал все эти решения, но никто из них не работает каждый раз. Моим основным тестом была html-страница с изображением, установленным в качестве фона на странице html. Эта страница и изображение html загружаются локально на моем iPad через метод "sync", который я написал. Единственный способ полностью сохранить кеш reset - это постоянно изменять URL-адрес изображения на странице html, чтобы каждый раз он представлял себе уникальный образ. Например, в моем html:
<body background="image.png?v123">
Итак, каждое изменение страницы мне нужно обновить номер версии:
<body background="image.png?v1234">
и т.д. и т.д. Вы можете изменить URL-адрес в любом случае, он просто должен быть другим.
Ну, я устал от этого. Теперь, когда я загружаю контент локально, я вместо этого динамически меняю имя папки. Поскольку эта папка является родительской папкой, и все мои ссылки относительны, это означает, что мне не нужно каждый раз редактировать мои html файлы. Пока это работает нормально. Я бы хотел, чтобы эти другие методы были согласованными, так как было бы проще просто reset кэша.
Таким образом, в моих запросах его baseURL вызывает мой кеш reset, а не строку запроса на мой url или фоновое изображение, или файл css и т.д. и т.д.
NSString *myURL = @"index.html";
NSURL *baseURL = [NSURL fileURLWithPath:@"FULL_PATH_TO_DOCS/MYFOLDERV123"];
[myTargetWebView loadHTMLString:myURL baseURL:baseURL];