如何在Web浏览器localstorage中存储20000表行的记录?

时间:2019-05-31 14:10:10

标签: javascript reactjs local-storage

我有一项任务是将所有记录存储到浏览器的本地存储中并显示出来,其中必须使用它来搜索排序数据并将结果显示在视口中。   我更喜欢使用WebSql,但它不支持所有浏览器。   我正在寻找实现它的指南,但在那时它不会影响浏览器在搜索或排序时的性能。

我尝试使用websql

各种结果,名称,版本,显示名称,大小

name         = 'listofdata'
version      = 1.0
display_name = 'listofdata'
size         = 2621440 

// parameters: name, version, display name, size (in bytes)
db = window.openDatabase(name, version, display_name, size)

result = 'Database "' + display_name + '" created'
addResult(result, createDB)

我也想在其他浏览器中使用,但对此一无所知。

1 个答案:

答案 0 :(得分:0)

首先,请确保您的2万条记录能够容纳localStorage的5MB存储限制。

现在来:

  

我正在寻找实现它的指南,但是那样一来它就不会影响浏览器在搜索或排序时的性能。

第一种方法: 对于排序和搜索,最好的选择(从逻辑上和性能上考虑)是将所有记录存储到单个JSON字符串化数组中放入localStorage,然后使用.filter()对象的.sort()Array方法分别搜索和排序。 请记住,遍历20K条记录可能需要几秒钟(大约需要1-4秒,具体取决于计算机的处理能力)。如果您想一次访问和处理所有记录,此方法将很方便。

第二种方法: :使用某种主键/唯一键分别存储每个记录,以标识每个记录。然后,在需要时按通常从localStorage中获取任何键/值对的方式获取所需的一对。至于搜索和排序,您可以使用Object.keys()Object.entries()快速获取所有记录,然后使用相同的.filter().sort()方法进行搜索和排序在第一种方法中。

您不一定必须使用indexeddbSQL数据库。 使用localStorage 是可以实现的,只是它可能仅适用于小型记录,并且在极有可能永远不会扩大规模的情况下使用。