【发布时间】:2017-04-25 14:33:12
【问题描述】:
我有一个页面,它在组件中显示多个 (12+) 对象,每个对象都有一个图像。这张图片有一个src 属性,我通过调用我的 Firebase 存储来设置它:
this.props.storage.child('Land.jpg').getDownloadURL().then(function(url) {
var img = document.getElementById('imageGoesHere'+this.state.currentId);
img.src = url;
}.bind(this))
storage 属性由父组件生成并向下传递:
firebase.initializeApp(config);
var storage = firebase.storage();
var storageRef = storage.ref("");
storageRef var 作为 prop 传递给调用 getDownloadURL() 函数的每个子组件。
这可行,但getDownloadURL 函数似乎真的很慢。页面呈现,然后每个图像至少需要一秒钟才能显示/呈现。我知道这不是原始 URL 的问题,因为我可以获取原始 URL 并将其粘贴到 src 中并且加载正常(即几乎立即);我查看了 chrome devtools 中的 Network 选项卡,它在getDownloadURL 调用和响应之间至少显示了一秒钟。这是让图像显示在网页中的正确方法吗? Firebase 存储文档没有提到任何其他方式。
编辑:两件事;首先,我在存储中只有 5 个测试图像,所以它不像我正在与根存储参考同步到一大堆。
第二件事; chrome devtools 告诉我它“停滞”了 1-4 秒,而实际请求只需要 100 毫秒。什么会导致停顿?
【问题讨论】:
-
性能总是取决于网络连接。您能否设置一个重现性能问题的 jsbin,以便我可以检查我获得的性能与您获得的性能?
-
一次只能获取 4-10 张图片。取决于浏览器。
标签: javascript reactjs firebase firebase-storage