在使用URL 加载系统时,主要的两种方法可以执行HTTP请求和接收响应:
一、同步请求的最佳实践
- 只在后台线程中使用同步请求,除非确定请求访问的是本地文件资源,否则请不要再主线程上使用;
- 只有在知道返回的数据不会超出应用的内存时才使用同步请求。记住,整个响应体都会在位于代码的内存中。如果响应很大,那么可能导致应用出现内存溢出问题。此外,当代吗将响应解析为所需的格式时可能需要复制返回的数据,这会导致内存增加一倍;
- 在处理返回的数据前,验证错误与调用返回的HTTP响应状态码;
- 如果源URL需要验证,那么不要使用同步请求,因为同步框架并不支持对认证请求作出响应;
- 如果需要向用户提供进度条,那么不要使用同步请求,因为请求是原子的,无法提供中间的进度指示信息;
- 如果需要通过流解析器来渐进解析响应数据,那么不要使用同步请求;
- 如果在请求完成前需要取消,那么不要使用同步请求。
二、异步请求的最佳实践
- 对于大的上传或者下载来说,请使用异步请求以减少应用的内存占用量;
- 在需要认证的情况下请使用异步请求;
- 如果需要向用户提供进度反馈,那么请使用异步请求;
- 在后台线程上使用异步请求时要小心,请提供一个运行循环;
- 对于可以在后台线程的请求队列中轻松调度和完成的简单请求来说,这时使用异步请求有些过犹不及;
- 如果使用输入流来上传数据,请实现connection:newBodyStream:方法以避免对输入流的复制
时间: 2024-10-27 11:05:39