1.?
NSURLConnection 開啟的請求最多只能同時進(jìn)行4個饮六,如果超過4個再開啟請求焰轻,超出的部分將會處于掛起狀態(tài),如果前面有請求結(jié)束掖肋,取消等情況甩苛,后面的請求就會按順序補(bǔ)上蹂楣。如果處于掛起狀態(tài)的請求如果等待時間過長,也會被自動取消讯蒲。關(guān)于最多4個NSURLConnection請求痊土,api里面并沒有提到,在stackoverflow里面有很多人都有提到墨林,并且我自己也驗證了赁酝。
2.
?NSMutableURLRequest 如果要加上Range請求的范圍,那么一定要這樣創(chuàng)建請求:
NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:[actualURLComponentsURL]cachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:20.0];
[requestaddValue:[NSStringstringWithFormat:@"bytes=%ld-%ld",2000, 555555] forHTTPHeaderField:@"Range"];
self.connection= [[NSURLConnectionalloc]initWithRequest:requestdelegate:selfstartImmediately:NO];
如果你是這樣創(chuàng)建的請求:
NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];
[requestaddValue:[NSStringstringWithFormat:@"bytes=%ld-%ld",2000, 555555] forHTTPHeaderField:@"Range"];
self.conn= [NSURLConnectionconnectionWithRequest:requestdelegate:self];
會有一個很嚴(yán)重的后果旭等,對于同一個url酌呆,第一次加了什么樣range范圍,以后的請求不管加不加range搔耕,請求回來的request數(shù)據(jù)都是第一個range范圍內(nèi)的數(shù)據(jù)隙袁,簡而言之,第一次加了什么range度迂,以后怎么也改不了藤乙。關(guān)于這一點(diǎn)的原因api有提到。
3.?
正常狀態(tài)下地請求惭墓,就是不加range的請求坛梁,返回的head中包含了contentType信息,但是加了range之后腊凶,就不包含了contentType信息了划咐,如果是通過resourceLoader給AVplayer填充數(shù)據(jù)的形式實(shí)現(xiàn)視頻的邊下邊播,每次請求都需要自己補(bǔ)充contentType信息钧萍。
4.?
通過resourceLoader給AVplayer填充數(shù)據(jù)的形式實(shí)現(xiàn)視頻的邊下邊播褐缠,每次拖動都會產(chǎn)生很多個請求,實(shí)際上风瘦,只給最后一個請求填充數(shù)據(jù)队魏,視頻就能流暢播放。理論上每一個不需要的請求都會走一個結(jié)束的代理方法告知你取消,但是有一個并沒有胡桨,如果只處理一個請求官帘,表面上看上去沒有問題,但是我們它的內(nèi)部實(shí)現(xiàn)原理昧谊,找了很多資料刽虹,國外有些人只處理一個,有些人處理多個呢诬,沒有一個定論涌哲。為了保險,還是處理多個吧尚镰。