本人最近开发的app是一款电视机顶盒android app,该app打开后会去向服务器求取各个位置的图片,图片内容是服务器后台事先上传并配置好的。客户端哪个页面,哪个位置放哪张图片,都是服务端配置的。所以app开启后的2,3秒内可能要请求十几、甚至几十张图片,并快速显示出来。通常情况下是没有问题的,但是有个别情况图片开始加载到全部加载完毕需要一二十秒,这个问题困扰了我好久。下面是我们的解决过程。

  • 首先怀疑网络问题

服务器开发人员反复实验多次,无论请求十张还是上百张,服务器都是快速返回图片数据,绝不至于要一二十秒;

  • 怀疑图片加载引擎出问题

先后用了五种图片加载引擎都会出现这种问题(用到的加载引擎有, ImageReq, FinalBitmap, facebook的fresco引擎,xutils, Picasso ,共五种,其中fresco 和xutils 在机顶盒上加载效果更好一些)。如果是加载引擎的问题,总不能所有引擎都有问题吧。

所以很可能代码里哪里出错了,或者图片请求过程哪里出错了。

  • 一个一个图片请求排查

经过给一个个图片加载请求过程加log并排查,发现只有当最开始请求的图片链接种有“无效链接”时才会有引擎加载慢的问题。

譬如,app开启时要同时请求十几张图片,而最开始的几张图片连接时无效的或者客户端永远请求不到的,这时候引擎图片请求就卡在这里,直到这几张图片请求出现网络报错或者“timeout”后才继续执行后面的“链接正常”的图片请求。这几张无效的图片请求导致后面十几张或几十张图片请求滞后。

当然若是最后几张图片出现“无效链接”则不会导致所有图片加载慢,此时最多是最后几张图片加载不出来。

只有最开始几张图片无效时才会出现这个问题。问题终于找到了。

  • 解决方法

这种无效链接而加载慢的问题,是客户端的原因吗?有一部分,图片请求时timeout时间太长了,所以最好自己能控制timeout时间,而不是全都交给引擎解决。1s内秒获取不到,就通知timeout。当然还有服务端的原因:因为客户端无法识别你这个链接是有效还是无效,譬如多加个字母,少加个数字客户端都无从知晓。所以最好也在服务端排查,为什么会传给客户端错误的链接?!

所以最终这个问题的解决是服务端人员完成的: 在返回给客户端发图片链接的时候严格检查,域名、路径、图片名字严格对应,保证所有图片链接是有效的,能成功请求到的。

同时客户端要完善图片请求过程,请求1秒得不到响应就抛出timeout异常,不至于一直占用资源等待而影响其他图片的获取。

关于网络请求图片缓慢的问题真的很令人头疼, 这仅仅是所有问题中的一个小插曲。记录该过程,以供参考。

网络图片加载缓慢问题解决方案相关推荐

  1. 针对手机连WIFI微信公众号等图片加载缓慢问题——解决方案

    问题现象: 手机通常是连接WIFI情况下,但表现出公众号图片加载异常,非常缓慢,当切换到流量时,图片加载恢复正常速度. 排除WIFI性能问题.排除网络连接问题. 导致问题原因及解决方案: 1.检查路由 ...

  2. el-carousel加载缓慢

    vue3.0+vite+ts使用el-carousel 实现轮播图场景,自动切换 首次加载缓慢,鼠标点击向左或者向右箭头才会显示图片,否则只显示下边的指示器.代码如下: <div >< ...

  3. Visual Studio 2012 调试程序加载缓慢,提示正在下载符号

    当在Visual Studio 2012中调试程序的时候,整个过程加载缓慢,并且有类似"正在下载符号......"的提示. 这是因为Visual Studio在调试的时候,默认从M ...

  4. iscroll动态加载数据完美解决方案

    iscroll动态加载数据完美解决方案 参考文章: (1)iscroll动态加载数据完美解决方案 (2)https://www.cnblogs.com/ShoneH/p/5253758.html (3 ...

  5. java 找不到或无法加载主类- 解决方案

    java 找不到或无法加载主类- 解决方案 参考文章: (1)java 找不到或无法加载主类- 解决方案 (2)https://www.cnblogs.com/caibixiang123/p/1170 ...

  6. Android网络图片加载缓存处理库的使用---第三方库学习笔记(五)

    两款比较优秀的开源图片处理库框架:Universal-ImageLoader和Picasso. Universal-ImageLoader 简介: Universal-ImageLoader是目前An ...

  7. 简单的网络图片加载工具类

    简单的网络图片加载工具类 根据图片url网址解生成图片,首先解析图片的流信息,然后通过bitmapfactory工具类生成bitmap图片,设置到图片控件上即可,详情看代码 import androi ...

  8. 记一次小程序自定义导航栏及加载动画的解决方案

    记一次小程序自定义导航栏及加载动画的解决方案 主要逻辑就是动态获取设备的 statusBarHeight 和 titleBarHeight,来设置导航栏的高度和 paddingTop ip6 ipx ...

  9. Vue首页加载过慢 解决方案

    Vue首页加载过慢 解决方案 参考文章: (1)Vue首页加载过慢 解决方案 (2)https://www.cnblogs.com/annie211/p/10825568.html 备忘一下.

最新文章

  1. 原始套接字学习笔记(1)
  2. 高斯混合模型--GMM
  3. case例句java_case的一个用法--case 嵌套
  4. C# 16进制与字符串、字节数组之间的转换
  5. SpringMVC-请求处理
  6. 蓝桥杯 123 二分+打表
  7. windows常用指令
  8. navicate连接远程数据库
  9. (5)css样式表特征
  10. Android开发笔记(三十三)文本文件和图片文件的读写
  11. python网络编程基础知识_python网络编程基础
  12. js向html文档添加空格,javascript – 如何在HTML中的行之间找到空格?
  13. Microsoft Office 2010组件介绍
  14. SketchUp插件|FredoGhost幻影替身插件最新版免费下载及介绍(轻量化草图大师模型)
  15. mysql grant教程_MySQL的Grant命令详解
  16. OpenCV—python 角点特征检测之一(cornerHarris、Shi-Tomasi、FAST)
  17. 工程师也该学习机器学习了!
  18. 论文笔记 EMNLP 2020|Graph Transformer Networks with Syntactic and Semantic Structures for Event Argument
  19. css怎么使图片变暗些
  20. Springboot整合ES8(Java API Client)

热门文章

  1. IBM ServerGuide 9.0
  2. 阿里云CentOS7下载地址
  3. mysql创建数据表列子,MySQL 创建数据库及简单增删改查
  4. 《Android之大话设计模式》--设计原则 第三章:开放封闭原则 孙悟空任弼马温一职
  5. c++ 转bcd码_BCD码、十六进制与十进制互转
  6. graph - hzw模拟赛Test13
  7. 2022-2028年中国物流地产行业市场发展潜力及投资风险预测报告
  8. Android二維碼掃描
  9. 如何在 BGP 中通告网络
  10. ceph mon 无法启动,报错:ceph-12.2.11/src/mon/AuthMonitor.cc: 157: FAILED assert(ret == 0)