在使用URL 加載系統時,主要的兩種方法可以執行HTTP請求和接收響應:
一、同步請求的最佳實踐
- 只在後臺線程中使用同步請求,除非確定請求訪問的是本地文件資源,否則請不要再主線程上使用;
- 只有在知道返回的數據不會超出應用的內存時才使用同步請求。記住,整個響應體都會在位於代碼的內存中。如果響應很大,那麼可能導致應用出現內存溢出問題。此外,當代嗎將響應解析爲所需的格式時可能需要複製返回的數據,這會導致內存增加一倍;
- 在處理返回的數據前,驗證錯誤與調用返回的HTTP響應狀態碼;
- 如果源URL需要驗證,那麼不要使用同步請求,因爲同步框架並不支持對認證請求作出響應;
- 如果需要向用戶提供進度條,那麼不要使用同步請求,因爲請求是原子的,無法提供中間的進度指示信息;
- 如果需要通過流解析器來漸進解析響應數據,那麼不要使用同步請求;
- 如果在請求完成前需要取消,那麼不要使用同步請求。
二、異步請求的最佳實踐
- 對於大的上傳或者下載來說,請使用異步請求以減少應用的內存佔用量;
- 在需要認證的情況下請使用異步請求;
- 如果需要向用戶提供進度反饋,那麼請使用異步請求;
- 在後臺線程上使用異步請求時要小心,請提供一個運行循環;
- 對於可以在後臺線程的請求隊列中輕鬆調度和完成的簡單請求來說,這時使用異步請求有些過猶不及;
- 如果使用輸入流來上傳數據,請實現connection:newBodyStream:方法以避免對輸入流的複製