收藏
回答

小程序中,如何实现对图片、音频、小视频的预加载?

我本来以为可以通过 getImageInfo 来实现简单的预加载图片,但事实上不能行,这个在H5上是正常的请求图片,但在小程序中其实是走的xhr请求,也就是常规的对API的请求,所以就算我执行了该方法,在小程序的调试器中依然会发生两次请求


找了一圈资料,目前大致思路:

1 依然使用 getImageInfo ,但是要在调用成功后用拿到的临时地址 path 去替换原来的url,感觉相当憨憨,而且相当不实用吧,我是想实现在项目中的某种通用组件,给我url,我给你加载,别的什么都不做

2 使用一个奇怪的姿势,即 downloadfile 去下载图片,并base64保存至某个临时地址,感觉属于邪道,或者我姿势不足,而且这种方式还不如就用上面的getimageinfo ,还简单一些

3 更奇怪了,还是最笨的去使用 image 标签,然后 display:none ,感觉low的不能再low了

4 参照某种懒加载的方式,建立在3之上的image方法调用 bindload 和 binderror,手搓一个类似display:none的组件

以上4种,都感觉相当蠢,小程序出来这么多年了,就没有一种比较成熟的、优雅的图片预加载方案吗?





回答关注问题邀请回答
收藏

2 个回答

  • 人间逍遥客。
    人间逍遥客。
    01-20

    按AI的回复,并不能解决问题:

    我在A页面执行:

    B页面直接加载:


    结果仍然发起两次请求:


    01-20
    有用
    回复 2
    • 人间逍遥客。
      人间逍遥客。
      01-20
      抱歉,我重新试了一下,似乎成功了,刚刚我只注意到了请求,在我清除缓存之后,我发现size其实来源于diskcache,这应该是用到了文件缓存的意思吧?
      01-20
      回复
    • 人间逍遥客。
      人间逍遥客。
      01-20
      向各位确定下,这样是对了吗?
      01-20
      回复
登录 后发表内容