Skip to main content

Crate pagesift_store

Crate pagesift_store 

Source
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
CacheEntry
CachePolicy
一次请求的缓存参数。
Config
打开存储的配置,用 Config::new 创建后按需修改字段。
ContentHash
GcReport
Items
OpenReport
打开时重建索引的情况。
SnapshotMeta
SnapshotPut
Snapshots
Stats
Store
存储句柄,克隆很便宜(内部是 Arc)。
Tasks

Enums§

CacheLookup
Error
SyncPolicy
写入后何时调用 fsync。

Type Aliases§

Result