标签: indexeddb

存储脱机Web应用程序的映像数据(客户端存储数据库)

我有一个使用appcaching的离线Web应用程序.我需要提供大约10MB - 20MB的数据,它将保存(客户端)主要由PNG图像文件组成.操作如下:

  1. Web应用程序下载并安装在appcache中(使用清单)
  2. 服务器PNG数据文件的Web应用程序请求(如何? - 请参阅下面的替代方案)
  3. 有时Web应用程序与服务器重新同步,并对PNG数据库进行小的部分更新/删除/添加
  4. 仅供参考:服务器是JSON REST服务器,可以将文件放在wwwroot中以便提取

这是我目前对处理二进制blob存储的基于客户端的"数据库"的分析

在底部看到更新

  • AppCache(通过清单添加所有PNG,然后按需更新)
    • CON:PNG数据库项目的任何更改都意味着清单中所有项目的完整下载(真的是坏消息!)
  • WebStorage
  • PhoneGap和SQLLite
    • CON:赞助商将其拒绝为需要认证的原生应用
  • ZIP文件
    • 服务器创建一个zip文件,将其放在wwwroot中,并通知客户端
    • 用户必须手动解压缩(至少这是我看到的)并保存到客户端文件系统
    • Web应用程序使用FileSystem API来引用文件
    • CON:ZIP可能太大(zip64?),创建时间长
    • CON:不确定FileSystem API是否总能读出沙箱(我想是这样)
  • USB或SD卡(回到石器时代......)
    • 在脱机之前,用户将是服务器的本地用户
    • 所以我们可以让他插入SD卡,让服务器用PNG文件填充它
    • 然后用户将其插入笔记本电脑,平板电脑
    • Web应用程序将使用FileSystem API来读取文件
    • CON:不确定FileSystem API是否总能读出沙箱(我想是这样)
  • 的WebSQL
    • CON:w3c放弃了它(非常糟糕)
    • 我可能会考虑使用IndexedDB和WebSQL作为后备的Javascript包装器
  • FileSystem API
  • IndexedDB的
    • IE10中的良好支持,FireFox(保存,读取blob)
    • 比文件系统更快速,更易于管理(删除,更新)
    • PRO:请参阅速度测试:http://jsperf.com/indexeddb-vs-localstorage/15
    • 请参阅有关在IndexedDB中存储和显示图像的文章:https://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/
    • CON:我确认Chrome还不支持blob写入(当前的bug,但不清楚何时修复)
    • 更新:Chrome开发人员确认他们正在为桌面和Android工作!还没有时间表.
  • LawnChair JavaScript包装器http://brian.io/lawnchair/
    • PRO:非常干净的IndexedDB,WebSQL或任何数据库的包装器(想想polyfill)
    • CON:无法存储二进制blob,只能存储数据:uri(base64编码)(由于解码成本可能导致致命缺陷)
  • IndexedDB JQUERY polyFill https://github.com/axemclion/jquery-indexeddb
    • Parashuram为原始的IndexedDB接口编写了一个很好的JQUERY包装器 …

javascript html5 web-applications indexeddb leaflet

103
推荐指数
2
解决办法
3万
查看次数

如何在Chrome中删除indexedDB

我正在一个涉及使用IndexedDB的项目中工作.当我开始了解这项技术时,我需要能够手动删除一个indexedDB,以便重新开始.

我在Firefox中找到了这样做的方法,但我找不到谷歌浏览器的方法.

我尝试删除此文件夹的内容(我正在使用Mac):

{home}/Library/Application Support/Google/Chrome/Default/IndexedDB

但似乎Chrome stil在任何地方都有db,所以我无法重新开始.

google-chrome indexeddb

87
推荐指数
6
解决办法
8万
查看次数

在2011年为iOS/Android开发HTML5离线存储解决方案

问题:

我需要一个设备不可知(例如HTML5)解决方案,用于在手机或平板电脑类型设备(例如iOS/Android)上离线存储和查询250,000多行数据.我的想法是让人们在没有任何蜂窝数据连接的偏远地区工作,他们需要对这些数据运行查询并在离线时进行编辑.部分地,它将基于地理位置,因此如果他们所在的区域中有资产(使用GPS),那么它将显示这些资产并让它们被编辑.当他们返回办公室时,他们可以将数据同步回办公室服务器.

我从Web标准的角度来看这个问题的原因基本上是通过在HTML5中编写一次来节省金钱和时间,然后它可以跨多个平台工作,而不是在Objective C和Java中编写两次.此外,如果你写的是平台不可知的东西,那么你就不会被锁定,并且当每个人都搬到新的船上时,不要随船离开.我们有一个类似的应用程序为Windows Mobile 5编写,现在它没用,因为该平台已经死了.

设备上的脱机数据库需要是:

  • 快速(响应时间不超过2秒)
  • 可能执行连接并与能够查询数据库的其他表建立关系
  • 选择一定范围内的数据或标准,例如通过基于GPS读数的x&y坐标.

选项:

HTML5本地存储:

对于少量数据<5,000键/值,如果将其转换为JSON,甚至可以在其中存储数组/对象.

缺点:

  • 即使在高端机器上,超过10,000行,浏览器也会慢慢爬行.
  • 无法对数据执行复杂查询以提取所需数据,因为您必须遍历整个存储并手动搜索它.
  • 可存储的存储量限制

Web SQL数据库:

  • 符合要求.
  • 快速运行250,000行查询(1-2秒)
  • 可以创建复杂的查询,连接等
  • Safari,Android和Opera支持,因此适用于iOS和Android设备

缺点:

  • 截至2010年11月已弃用
  • 跨目录攻击的安全漏洞.这不是一个问题,因为我们不会在共享主机上

IndexedDB的:

键/值对象存储类似于本地存储,除了索引.

缺点:

  • 慢速运行200,000行(15-18秒)的查询
  • 无法运行复杂的查询
  • 无法与其他表连接
  • 主要手机或平板电脑设备不支持,例如iPad/Android
  • 标准不完整

这留下了实现已弃用的Web SQL方法的唯一选择,该方法可能仅工作一年左右.IndexedDB和本地存储目前无法使用.

我不确定Mozilla和Microsoft如何推荐Web SQL数据库标准,以及为什么W3C会让它发生.据称他们之间拥有77%的桌面浏览器市场.在先进的移动设备上,Mozilla和微软几乎没有影响力,因为Safari,Opera和Android拥有超过90%的市场份额.Mozilla和微软如何决定在最有可能使用离线存储的移动市场中应该使用哪种标准没有任何意义.

Mozilla评论中,为什么他们想要使用IndexedDB而不是主要关注"开发者美学",他们不喜欢在JavaScript中运行SQL的想法.我不是买它.

  1. 目前提出的标准较差,并且是一种非常基本的NoSQL实现,速度很慢,甚至不支持数据库中人们需要的高级功能.有许多样板代码来建立数据库并获取数据,但是他们声称人们会在其顶部编写一些很好的抽象库,它们将提供更高级的功能.截至2011年10月,他们无处可见.

  2. 他们已经弃用了现有的Web SQL标准,该标准实际上可以在主要的移动设备/平板电脑浏览器中实现.虽然主流移动浏览器无法提供"新"和"更好"的标准.

  3. 我们作为开发人员应该在未来3 - 5年内使用什么,这时IndexedDB规范可能会变得标准化,具有更多功能,在主要的移动/平板电脑浏览器中实现,还有一些很好的库可以让事情变得更容易?

W3C应该保持Web SQL数据库标准并行运行,并解决问题.它已经支持主要的移动平台,并且运行良好.事实上,Mozilla和微软作为拥有最多桌面浏览器份额的两家公司能够取消这一标准是非常可疑的,可能会被视为阻碍移动网络平台进展的尝试,直到他们能够赶上并提供针对iOS/Safari和Android的竞争解决方案.

总之,任何人都有我的问题的解决方案,适用于手机/平板电脑设备的iOS/Android.也许是一个很好的包装器API,它可以在后台使用多个数据库实现并具有查询功能,它允许您选择哪个数据库具有优先级.我已经看过像草坪椅这样的东西,但我很确定它只允许你默认使用本地存储,然后再回到其他存储.我想我宁愿使用Web SQL(默认情况下),然后使用较慢的选项.

对解决方案的任何帮助都非常感谢,谢谢!

javascript html5 web-sql indexeddb jaydata

74
推荐指数
3
解决办法
1万
查看次数

indexedDB在概念上与HTML5本地存储有何不同?

  1. indexedDB和本地存储都是键值存储.拥有两个键/值存储的优势是什么?
  2. indexedDB是异步的,但是连接(最耗时的东西)是手动的.它们似乎与异步调用在同一个线程中运行.这怎么会阻止用户界面?
  3. indexedDB允许更大的商店.为什么不增加HTML5商店的大小?
  4. 我在挠头.indexedDB有什么意义?

javascript html5 indexeddb

67
推荐指数
3
解决办法
2万
查看次数

反应本机捆绑失败。错误消息:“尝试解析模块‘idb’时......实际上这些文件都不存在”:

有问题的错误消息:

在尝试idb从文件解析模块时,成功找到了C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\@firebase\app\dist\esm\index.esm2017.js包。C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\idb\package.json然而,这个包本身指定了一个main无法解析的模块字段(C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\idb\build\index.cjs。事实上,这些文件都不存在:

错误信息照片

该错误的令人困惑的部分是文件index.esm2017实际上确实存在于该目录中。'`C:\Users\OG\Desktop\programming\react_native\mealstogo\MealsToGo2\node_modules\idb\build\index.cjs'

我已经卸载并重新安装了 firebase。我已经安装并卸载了“idb”。我已经清除了yarn缓存、expo缓存、删除了node_modules并重新安装以及清除了watchman缓存,但都无济于事。我还进行了三次检查,确保文件目录实际上不在错误消息所示的位置。

当博览会安装lottie-react-native时出现错误,但似乎无关,并且在删除lottie-react-native后问题仍然存在。我已经使用 git 将代码恢复到行为开始之前,现在问题仍然存在。

看起来整个项目现在都被毁了,我该如何继续前进。

indexeddb firebase reactjs react-native expo

50
推荐指数
4
解决办法
3万
查看次数

HTML5 IndexedDB,Web SQL数据库和浏览器大战

我正在开始开发具有脱机数据库存储要求的Web应用程序.长话短说,应用程序应该可以运行:

  • Chrome浏览器首选的主要桌面浏览器之一
  • iOS上的Safari
  • Android的原生浏览器(基于V8和WebKit)

那么问题是选择哪种技术:IndexedDB或Web SQL数据库?

关于Web SQL数据库,一方面可以在任何上述场景中使用它.另一方面,Mozilla表示Firefox永远不会实现它,根据HTML5 工作草案,规范已经陷入僵局:

这个规范已陷入僵局:所有感兴趣的实现者都使用了相同的SQL后端(Sqlite),但我们需要多个独立的实现来继续标准化路径.在另一个实现者对实现此规范感兴趣之前,SQL方言的描述仅仅是对Sqlite的引用,这对于标准是不可接受的.如果您是一个对实现独立SQL后端感兴趣的实现者,请联系编辑器,以便他可以为方言编写规范,从而允许此规范继续前进.

IndexedDB是Mozilla提倡的替代品,但它只会出现在Firefox 4中.微软很感兴趣,Chrome也会支持它.我对Apple的IndexedDB计划一无所知.

我个人倾向于选择Web SQL数据库,但仅仅因为我习惯了SQLite,我喜欢SQL的强大和表现力,而且我理解关系模型.对我来说,IndexedDB是一种不确定性.

那就是说,我害怕赌错马.假设支持Web SQL数据库将继续存在,即使IndexedDB成为标准,是否安全?

(关于CouchDB的说明:您是否也将其视为替代方案?)

html5 web-sql indexeddb

44
推荐指数
6
解决办法
4万
查看次数

如何从JavaScript中删除整个IndexedDB数据库?

如何从JavaScript中删除整个IndexedDB数据库,而不仅仅是一个对象存储?我正在使用IndexedDB垫片,它可能使用WebSQL作为其后端.

我主要想知道如何为PhantomJS(无头)浏览器执行此操作,尽管Chrome,Safari(在iPad上)和IE10是其他重要的浏览器.

javascript html5 phantomjs indexeddb

40
推荐指数
1
解决办法
4万
查看次数

IndexedDB中的最大项目大小

我正在开发一个简单的Web实用程序,它使用HTML5的IndexedDB(类似于键值DB)功能.

我一直在找,但我无法知道:我可以在商品中存储的最大尺寸是多少?

javascript html5 indexeddb

38
推荐指数
3
解决办法
3万
查看次数

Chrome浏览器的存储限制

什么是软限制(用户需要允许超出限制)?什么是硬限制(允许的最大值).

indexeddb

33
推荐指数
5
解决办法
4万
查看次数

使用多个条件查询

我最近发现(遗憾的是)HTML5不再支持WebSQL,而且IndexedDB将替代它.

我想知道是否有任何方法可以查询或搜索IndexedDB的条目,方式与我如何使用SQL搜索满足多个条件的条目类似.

我已经看到我可以使用KeyRange的一个条件搜索IndexedDB.但是,我似乎无法找到任何方法来搜索两列或更多列数据,而无需从数据库中获取所有数据并使用for循环执行此操作.

我知道这是一个新功能,几乎没有在浏览器中实现,但我有一个项目,我正在开始,我正在研究我可以做的不同方式.

谢谢!

javascript indexeddb

32
推荐指数
2
解决办法
3万
查看次数