- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到讨论这三者之间区别的资源 download methods在 firebase 存储文档和每个文档的优缺点中。我想澄清一下 firebase 存储文档。
我的应用
从 Firebase 存储下载的 3 种方法
NSData
This is the easiest way to quickly download a file, but it must load entire contents of your file into memory. If you request a file larger than your app's available memory, your app will crash. To protect against memory issues, make sure to set the max size to something you know your app can handle, or use another download method.
问题:我尝试用这种方法在我的表格 View 单元格上显示 100 张大小为 10KB-500KB 的图像。虽然我的应用程序没有崩溃,但当我滚动浏览我的表格时,我的内存使用量增加到 268 MB。是否建议将此方法用于显示大量图像?
NSURL
The
writeToFile:completion:
method downloads a file directly to a local device. Use this if your users want to have access to the file while offline or to share in a different app.
问题:这是否意味着来自 firebase 存储的所有图像都将下载到用户的手机上?这是否意味着该应用将占用手机可用存储空间的很大一部分?
NSURL
If you already have download infrastructure based around URLs, or just want a URL to share, you can get the download URL for a file by calling the
downloadURLWithCompletion:
method on a storage reference.
问题:此方法是否需要强大的互联网连接和/或电话服务连接才能工作?
最佳答案
一般来说,你的内存使用不会受到检索方法的影响。只要您显示 100 张图像,它们的数据就会存储在内存中,并且如果它们的格式/压缩方式相同,则它们的大小应该相同。
无论采用哪种方式,我都建议您实现分页(为了您的方便,这个问题的 answer 可能是一个很好的实现引用/指南)以减少内存和网络使用。
现在,比较方法:
方法一
...but it must load entire contents of your file into memory.
这句话可能会让一些人认为这是一个内存效率低下的解决方案,当它真正意味着你无法检索部分数据,您只能下载整个文件。在存储图像的情况下,您可能希望它用于使数据有意义。
如果您的应用程序需要每次用户下载图像访问它(即如果您的图像定期更新),那么这个方法可能最适合你。图像将被下载每次应用程序启动时,它们都会在以下时间被丢弃你杀了它。
您表示您的部分用户群的互联网可能较弱连接等下一个方法可能更有效和用户友好
方法二
首先,回答您的问题:
其次,如果你打算使用这种方法,那么我建议你存储一个数据库中最后一个时间的时间戳(或任何类型的标记)图像发生变化。然后,每次打开应用程序时,执行以下流程:
如果您的网络使用优先级是高于本地存储。
最后……
方法三(不是真的)
这不是数据下载方法,它只是生成一个下载 URL 给 child 一个引用。然后你可以使用那个在您的应用程序或其他地方下载数据的 URL 只要使用过应用或 API 已获得访问您的 Firebase 存储空间的授权。
更新:
URL 是从 Firebase 引用生成的 (FIRDatabase.database().reference().child("exampleReference")
),看起来像这样:(注意:这是一个假链接这实际上不起作用,仅用于说明目的)
https://firebasestorage.googleapis.com/v0/b/projectName.appspot.com/o/somePathHere%2FchildName%2FsomeOtherChildName%2FimageName.jpg?alt=media&token=1a8f83a7-95xf-4d3s-nf9b-99a274927bcb
如果您只是尝试访问您通过任何常规网络浏览器生成的链接(假设您没有任何与项目中的冲突的 Firebase 规则
),您可以直接下载图片来自任何地方,而不仅仅是通过您的应用。
总而言之,此“方法”不会从 Firebase 存储中下载数据,如果您需要直接链接,它只会返回数据的下载 URL。
关于ios - 三种firebase存储下载方式的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653009/
当我尝试通过我的 .exe 文件从 url 下载 .pdf 文件时出现以下错误。 The server committed a protocol violation. Section=Response
我是一家非营利组织的 G Suite 管理员,刚刚发现数据导出功能,这似乎是个人帐户的外卖。 导出文件已准备好,现在可以从 Google Cloud Platform Storage 中的存储桶下载。
导航 引言 总体思路 七牛云相关的配置文件 获取七牛云上传token 相关类定义 核心代码实现 获取七牛云图片下载链接 公开空
这不是后端编程问题。我只能修改标记或脚本(或文档本身)。我在这里问的原因是因为我对适当术语的所有搜索都不可避免地导致有关编程此功能的问题和解决方案。我不是试图通过编程来强制它;我必须找出此 PDF 行
您好,我已在 Google AdSense 中注册,我想使用适用于 iOS 的 SDK,但目前我找不到 SDK 下载链接。 我的申请已获批准。 任何人都知道如何下载这个sdk。 我使用这个链接来描述如
我需要为当前在 SourceForge 上的 github 项目提供二进制文件和文档。在那里,我可以为我需要的下载提供一个目录结构,因为我必须为大约 10 个不同的操作系统提供几个版本。 github
我从 Canvas 下载绘图时遇到问题。这是我的代码: function downloadCanvas(link, canvasId, filename) { link.href =
ASP.NET 项目 我将使用 Azure 进行存储。问题(要求): 在我的项目中,我让注册用户下载文件。但我不希望用户将此下载链接分享给未注册的人(例如:我给注册用户的下载链接只能在他们的计算机上下
我编写了一个servlet,用于检查http header ,但我不知道为什么当页面加载时,它会自动开始下载。 /* * To change this template, choose To
我正在尝试将下载添加到我的网络浏览器,但遇到的问题是获取您尝试下载的文件的名称。这是我的下载代码: engine.locationProperty().addListener(new ChangeLi
我正在尝试下载网站的 html: String encoding = "UTF-8"; HttpContext localContext = new BasicHttpContext();
我制作了一个带有“开始下载”按钮的框架,用于从网站下载 JAR。 问题是每当我点击开始下载按钮时,整个框架就会卡住,直到下载完成,然后就正常了。 我该如何解决这个问题? 这是单击按钮时执行的代码 p
我得到这段代码来实现一些东西,它可以帮助我从给定的 URL 下载文件。 -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSes
我正在尝试创建一个 Controller 来使用流方法下载和上传文件,在我的例子中,所有文件都作为 Blob 保存在数据库中。我阅读了 Jboss Netty 的文档,但我认为这不是我的最佳解决方案。
下载并保存文件 let destination: DownloadRequest.DownloadFileDestination = { _, _ in // var fileURL = sel
使用 htaccess 我基本上试图禁止访问该页面,即 http://example.com , 但它仍然允许人们下载文件,如果他们有直接链接即 http://example.com/hi.zip .
我正在寻求将脚本与我的控制面板集成,并且由于我是新手脚本编写者而遇到问题。我想做的是用 1 个脚本下载一个文件并解压它。 示例: wget http://example.com/example.tar
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
这个问题在这里已经有了答案: Top techniques to avoid 'data scraping' from a website database (14 个答案) 关闭 5 年前。 我有
这个问题在这里已经有了答案: Reading and parsing email from Gmail using C#, C++ or Python (6 个答案) 关闭 7 年前。 我只是想,是
我是一名优秀的程序员,十分优秀!