2013-04-11 3 views
0

Вот очень простой вызов я делаю:NSURLConnectionDelegate в: willCacheResponse: случайно называют

NSURL *url = [NSURL URLWithString:urlString]; 
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:500]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; 
[connection start]; 

Стараюсь 2 случайных Pdf URL'ов, найденных на Google (поиск "Трюк типов файлов: PDF"):

A) NSString *urlString = @"http://www.eatletruc.com/letruc.menu0411.pdf"; 
B) NSString *urlString = @"http://www.botruc.com/boat-specs/C-Truc-7.pdf"; 

Они оба имеют одинаковые заголовки (с помощью allHeaderFields в связи: didReceiveResponse :):

A)

"Accept-Ranges" = bytes; 
Connection = "Keep-Alive"; 
"Content-Length" = 2641705; 
"Content-Type" = "application/pdf"; 
Date = "Thu, 11 Apr 2013 08:53:39 GMT"; 
Etag = "\"19a7b55-284f29-4a0a5e94ae1a7\""; 
"Keep-Alive" = "timeout=5, max=100"; 
"Last-Modified" = "Mon, 11 Apr 2011 15:05:50 GMT"; 
Server = Apache; 

B)

"Accept-Ranges" = bytes; 
Connection = "Keep-Alive"; 
"Content-Length" = 343793; 
"Content-Type" = "application/pdf"; 
Date = "Thu, 11 Apr 2013 08:55:38 GMT"; 
Etag = "\"b6864a-53ef1-49400c1d95800\""; 
"Keep-Alive" = "timeout=5, max=100"; 
"Last-Modified" = "Mon, 01 Nov 2010 17:01:20 GMT"; 
Server = "Apache/2.2.22 (Unix) mod_ssl/2.2.22 OpenSSL/1.0.0-fips mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635"; 

Но соединение: willCacheResponse: вызывается только для URL-адреса B. И я нахожу только URL-адрес B в базе данных SQLite cache.db.

Почему не URL-адрес кэша?

ответ

3

Итак, проблема возникает из-за размера файла.

Похоже, что NSURLCache не будет кэшировать файлы, размер которых превышает 5% от его емкости.

My NSURLCache был установлен на 50 МБ дисковой емкости, поэтому файлы размером более 2,5 МБ не кэшируются.

Расширение емкости диска решило мою проблему.

ps: вы можете увеличить емкость диска до 2 ГБ, поэтому файлы в кеше не могут быть больше 100 МБ.

Смежные вопросы