Expand description
pagesift 的内嵌存储:只追加的分段日志 + 内存哈希索引(PRD 6.8、F-6.4)。
三个命名空间共用一套日志:
Cache:抓取结果缓存,语义对齐 Firecrawl 的maxAge、minAge、storeInCache;Snapshots:原始 HTML 快照,zstd 压缩,按内容哈希去重;Tasks:爬取任务状态用的 KV、追加列表和集合。
§并发与异步
Store 是 Clone + Send + Sync 的句柄,多读单写:读只拿读锁并用 pread 读盘,
写操作串行。所有方法都是同步的,单次调用通常只有一次系统调用;
在 tokio 里可以用 Store::blocking(tokio 特性,默认开启)放进 spawn_blocking。
§持久性
每条记录带长度和 CRC32。重新打开时逐条校验,遇到写了一半的尾部就截断到最后一条完整记录。
何时 fsync 由 SyncPolicy 决定。同一个目录同一时间只能被一个进程打开。
Re-exports§
pub use warc::AssetSniffer;pub use warc::RecordType;pub use warc::SubresourceAsset;pub use warc::WarcDigests;pub use warc::WarcRecord;pub use warc::WarcWriter;pub use warc::WebpageSnapshot;
Modules§
- warc
- Pure Safe Rust ISO 28500 WARC/1.1 Archive Engine with Multi-Member Gzip and Dual Hashes.
Structs§
- Cache
- Cache
Entry - Cache
Policy - 一次请求的缓存参数。
- Config
- 打开存储的配置,用
Config::new创建后按需修改字段。 - Content
Hash - GcReport
- Items
- Open
Report - 打开时重建索引的情况。
- Snapshot
Meta - Snapshot
Put - Snapshots
- Stats
- Store
- 存储句柄,克隆很便宜(内部是
Arc)。 - Tasks
Enums§
- Cache
Lookup - Error
- Sync
Policy - 写入后何时调用 fsync。