+
13
-

回答

这是一个非常经典的前端大数据优化问题。

直接加载 100MB 的 CSV 会导致浏览器卡顿甚至崩溃。 可以“切割成小块”。

为了实现极低带宽(只下载需要的数据)和极低内存,我们需要采用 Hash Sharding(哈希分片) 策略。

我们以这个100万条域名排名记录csv为例,下载地址:https://tranco-list.eu/download/daily/top-1m.csv.zip

800_auto

一行一条记录,第一个是排名,第二个是域名,用,分开

怎么根据域名来查排名呢,这个百万记录的csv记录很大。

核心方案设计

数据预处理(Python):

将 前10条 单独存为一个极小的 JSON (top10.json),用于秒开展示。

将 剩余 100MB 数据 根据域名的哈希值切分成 N 个小 JSON 文件(例如 256 个分片)。

原理:google.com 经过哈希计算永远落在 shard_X.json 中。

前端展示(HTML/JS):

页面加载时,只请求 top10.json (几KB)。

搜索时,在前端计算输入域名的哈希值,算出它属于哪个分片,然后只下载那个几KB的分片文件进行查找。

网友回复

我知道答案,我要回答