관찰의 커플 : 요청이 캐시 할 수있는 하나 (예를 들어, http
또는 https
있지만 ftp
)해야합니다
.
응답은 응답을 캐시 할 수 있음을 나타내는 헤더를 생성해야합니다. 특히, Cache-Control
으로 설정해야합니다. NSURLCache
에 대한 NSHipster의 토론을 참조하십시오. 예를 들어
, 불완전하게 기록 룰을 만족해야하는 화상을
<?php
$filename = "image.jpg";
$lastModified = filemtime($filename);
$etagFile = md5_file($filename);
header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $lastModified) . ' GMT');
header('Etag: "' . $etagFile . '"');
header('Content-Type: image/jpeg');
header('Cache-Control: public, max-age=1835400');
header('Content-Length: ' . filesize($filename));
readfile($filename);
?>
다운로드 응답 (예를 들어, 응답은 총 지속 NSURLCache
의 5 %를 초과 할 수 없다). 예를 들어, 다음 사항을 배치 할 수 있습니다 응용 프로그램의 대리인의 didFinishLaunchingWithOptions
:
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity: 5 * 1024 * 1024
diskCapacity:20 * 1024 * 1024 diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
5메가바이트의 메모리 캐시와 20메가바이트의 지속적인 캐시를 설정합니다. NSURLRequest
를 만들 때
완성도를 위해서
, 나는 NSURLRequestReloadIgnoringLocalCacheData
의 NSURLRequestCachePolicy
는 응답이 이전에 캐시 된 경우에도 사용되는 캐시를 방해하는, 즉, 명백한 상태 것이다.
nil
을 반환하는 connection:willCacheResponse:
메서드가 같은 범주에 속하면 응답이 캐시되지 않습니다.
출처
2013-11-30 17:13:10
Rob