This commit is contained in:
2025-11-18 09:55:07 +08:00
parent a47a361adf
commit 68b6bb78e6
9 changed files with 460 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
# Research Notes: APT/APK 包缓存模块
## Decision Records
### 1) Acquire-By-Hash 处理
- **Decision**: 路径原样透传,缓存按完整路径存储;不做额外本地哈希校验,交由上游与客户端校验。
- **Rationale**: APT 自带哈希校验,路径即校验信息;本地重复计算增加 CPU/IO 成本且风险与上游标准重复。
- **Alternatives**: 额外本地哈希校验并拒绝不匹配(增加复杂度、可能与上游行为不一致);跳过缓存(失去加速价值)。
### 2) APT 索引再验证策略
- **Decision**: Release/InRelease/Packages* 请求统一带 If-None-Match/If-Modified-Since缓存 RequireRevalidate=true命中 304 继续用缓存200 刷新。
- **Rationale**: 与现有代理模式一致确保“latest” 索引及时更新,避免 stale。
- **Alternatives**: 固定 TTL 不再验证(风险:索引过期);强制每次全量 GET浪费带宽
### 3) APKINDEX 签名处理
- **Decision**: APKINDEX 及其签名文件原样透传并缓存,索引 RequireRevalidate=true包体直接缓存。
- **Rationale**: Alpine 客户端依靠签名文件校验,代理不应修改或剥离;再验证确保索引更新。
- **Alternatives**: 不缓存 APKINDEX失去加速效果仅缓存包体无法验证包版本更新