[iOS] NSURLCache 삭제 및 WKWebKit WebSite Cache 삭제

이번에 정리할 내용은 iOS Xcode 내에서 Cache를 삭제하는 법에 대해서 알아보려고 한다.

기존에 사용하고 있던 프로젝트는 UIWebView를 사용하다. iOS 속도 문제로 WKWebView로 변경하여 사용하고 있었는데, 기존 프로젝트 최초부터 지원 하던 버전에 iOS 8.0 (현재는 iOS 10.0) 이다.

당연히 앱을 실행할 때마다 캐시 삭제하는 로직을 넣어 주어 사용하고 있었는데, 이번 회사 서버패치 때, 캐시가 되면 안된다는 문제가 발생하여, 생각보다 이상하게 시간을 허비하여 캐시 삭제하는법을 다시 적는다.

일단 소스 코드를 참고 하자면, 첫번째 라인만 사용하고 있어서 당연히 Cache를 삭제를 하고 있다고 생각했는데, WkWebView의 webSite는 Cache삭제를 하고 있지는 않았다.

1
2
3
4
5
6
7
8
// 지정된 캐시 삭제 NSCachedURLResponse를 모두 제거한다.
[[NSURLCache sharedURLCache] removeAllCachedResponses];
        
// 지정된 날짜 이후에 웹사이트 데이터를 제거한다.
NSSet *webstieSet = [NSSet setWithArray:@[WKWebsiteDataTypeDiskCache,
                                          WKWebsiteDataTypeMemoryCache]];
NSDate *date = [NSDate dateWithTimeIntervalSince1970:0];
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:webstieSet modifiedSince:date completionHandler:^{}];
cs

그래서 추가한 코드로 WKWebView에서 특정날짜 이후로 WKWebView에서 호출한 WebSite를 삭제하는 코드를 추가하여 해결하였다.

나중에 분명 생각안날 것 같아서 코드 정리한다.

댓글

  1. 궁금한게 있습니다. NSDate *date = [NSDate dateWithTimeIntervalSince1970:0]; 이코드를 형식상 입력해야 한다는건가요??
    정상적으로 잘 작동하기 위해서?? 저 코드를 2020:0 2021:0 이런식으로 업데이트를 해주지 않아도 1970:0 한번 입력해놓으면 정상 작동하는거죠??

    답글삭제

댓글 쓰기