我有一项任务是将所有记录存储到浏览器的本地存储中并显示出来,其中必须使用它来搜索排序数据并将结果显示在视口中。 我更喜欢使用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)
我也想在其他浏览器中使用,但对此一无所知。
答案 0 :(得分:0)
首先,请确保您的2万条记录能够容纳localStorage
的5MB存储限制。
现在来:
我正在寻找实现它的指南,但是那样一来它就不会影响浏览器在搜索或排序时的性能。
第一种方法: 对于排序和搜索,最好的选择(从逻辑上和性能上考虑)是将所有记录存储到单个JSON
字符串化数组中放入localStorage
,然后使用.filter()
对象的.sort()
和Array
方法分别搜索和排序。 请记住,遍历20K条记录可能需要几秒钟(大约需要1-4秒,具体取决于计算机的处理能力)。如果您想一次访问和处理所有记录,此方法将很方便。
第二种方法: :使用某种主键/唯一键分别存储每个记录,以标识每个记录。然后,在需要时按通常从localStorage中获取任何键/值对的方式获取所需的一对。至于搜索和排序,您可以使用Object.keys()
和Object.entries()
快速获取所有记录,然后使用相同的.filter()
和.sort()
方法进行搜索和排序在第一种方法中。
您不一定必须使用indexeddb
或SQL
数据库。 使用localStorage
是可以实现的,只是它可能仅适用于小型记录,并且在极有可能永远不会扩大规模的情况下使用。