【问题标题】:photo download in react native iOS is too slowreact native iOS中的照片下载太慢了
【发布时间】:2020-03-06 06:58:55
【问题描述】:

我需要在 react native 中下载 1000 张照片以供离线使用。 我使用适用于 android 的 RNFetchBlob 和适用于 iOS 的 RNFS 来下载所有照片。

安卓版

       RNFetchBlob.config({
            path: `${Path.path}${fileName}.${type}`,
            fileCache: true
        }).fetch('GET', result, {})
        .progress((received, total) => {

        }).then(async res => {
            deletePhoto(id)
            console.log('downloaded', res)
        }).catch((error) => {
            downloadFile(fileName, result, type, id)
            console.log('error in file download', id)
        })

适用于 iOS

        RNFS.downloadFile({
            fromUrl: result,
            toFile:`${Path.path}${fileName}.${type}`,
            background: true,
            connectionTimeout: 1000 * 10,
            readTimeout: 1000 * 10,
            discretionary: true,
            progressDivider: 1,
            progress: (res) => {
            // do progress
            }
        }).promise.then((result) => {
            console.log('downloaded', result)
        })
        .catch(error => {
            console.log('error in file download', error)
        })

问题

下载 800 个文件所需的时间是 android - 2-3 分钟 取决于网络带宽和 iOS 20 分钟 我不知道我在做什么错了。

任何帮助都会对我有用 提前致谢

【问题讨论】:

    标签: ios react-native react-native-fs rn-fetch-blob


    【解决方案1】:

    您没有写任何关于图像大小的内容。 但是,如果您必须加载至少包含大量数据的大量图像,我建议您“重新考虑”您在应用中处理图像的策略。

    如果你确实需要离线所有这些图片,加载这些图片的高峰只是在第一次应用启动时。之后,您仅检查和同步自上次下载以来服务器上是否有新的、更改的或删除的图像。

    1. 在这种情况下,我建议将图像下载为块。这意味着...弄清楚用户希望看到的第一张图片是什么,并在第一个下载过程中加载它们。 对于应该出现图像(但尚未加载)的所有其他位置,您会输出如下消息:“请稍候。初始化正在进行中”。 然后您逐步加载 - 仍然按优先级 - 其他文件。
    2. 另一种解决方案可能是在服务器上设置文件大小/质量非常低的拇指,并首先将它们加载到应该出现图像的所有位置...然后在后台逐步加载图像。
    3. 如果您的图片没有太大变化,您可以考虑仍将一些需要的图片捆绑到您的 APK 中。这会增加 APK 大小,但会稍微提升第一张图片的启动(仅将其用作糟糕的解决方法。我不推荐这样做!)

    否则,如果您don't 需要所有图像离线,您可能会在进入屏幕(预期图像的位置)时预加载图像。

    至少我建议重新考虑在您的应用中显示图像的策略。不要像 1998 年的网页那样行事 - 并在 page-init 加载所有图像!

    您最好根据需要加载图像(延迟加载)。那里有一些组件。如果您以正确的方式实现它,甚至 core-Component -Komponent 也可以帮助您。

    希望对你有所帮助。

    【讨论】:

    • 单张图片(缩略图)大小为5kb到10kb
    • 我知道如何在应用程序中加载文件,但在我的情况下,我必须在登录我们的应用程序时下载所有缩略图。这样我就可以在没有互联网连接的情况下使用这些缩略图。
    • 我的简单问题是我做错了什么,所以 iOS 下载文件花费了太多时间?
    • 您没有写任何关于您的加载图像的策略。要知道将文件放入您的应用程序的技术方法并不是 100% 的解决方案……这就是我谈论 Strategy to load 的原因。但是,如果您认为您的策略很好,并且在技术上有效……请告诉我:还有什么人可以帮助您提供建议?!!
    • 正如我已经提到的,我的解决方案在 android 中运行良好,但在 iOS 上出现问题只是想知道我在哪里做错了,所以在 iOS 中下载缩略图需要这么多时间?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多