2016-12-16 7 views
2

, 나는 NSURLSession의 dataWithRequest 방법으로 여러 이미지를 다운로드하고 있습니다 :NSURLSession 및 이미지 캐시

let session: NSURLSession = NSURLSession(configuration: self.configuration) 
    let request = NSURLRequest(URL: self.url) 
    let dataTask = session.dataTaskWithRequest(request) { (data, response, error) in 
     // Handle image 
    } 

    dataTask.resume() 
    session.finishTasksAndInvalidate() 

질문 : 어떻게 이미지 캐시 크기를 제한 할 수 있습니까? 내 응용 프로그램이 장치에서 점점 더 많은 디스크 공간을 사용하고있는 것을 볼 수 있습니다. 이미지 캐시를 유지할 수 있지만 응용 프로그램에서 사용할 수있는 크기를 제한 할 수있는 방법이 있습니까? 만료 기한이 있습니까?

답변

1

NSURLSession은 NSURLCache 공유를 사용하여 응답을 캐시합니다. 당신이 공유 캐시의 디스크/메모리 사용을 제한하려면 새 캐시를 create하고 기본 하나를 설정해야합니다

let URLCache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024, diskPath: nil) 
NSURLCache.setSharedURLCache(URLCache) 

당신은 캐싱 here에 대해 좀 더 찾을 수 있습니다.

+0

캐시 제한을 설정할 때 한계에 도달하면 어떻게됩니까? 이전 캐시가 새 캐시로 대체됩니까? – Tiois

+0

URLCache는 캐시 된 응답에 대한 정보를 유지합니다. 응답을 만든 시간, 마지막으로 사용한 시간 등입니다. 따라서 새 응답을 저장할 공간이없는 경우 URLCache는 오랫동안 사용되지 않은 저장된 URL을 제거합니다. – Avt

+0

현재 디스크 용량이 설정되지 않았으며 기본값 (디스크 용량 20MB)이 사용되지 않은 것 같습니다. 로컬로 저장하지 않고 응용 프로그램에서 60MB의 Documents & Data ... – Tiois