现在设置了 trigger,每个源同步完成后都会立即更新这个源的 cache,而不用等每天凌晨统一更新 cache 了。这使得缓存不一致的时间缩短到秒级。

此外,由于 rsync 同步不够灵活,全部删掉再重新复制又太浪费,我重新发明了轮子来做同步。算法见下面的注释:


# There are actually 3 file lists:
#  - cache_list: files to be cached (param 1 of this func)
#  - WWWROOT: authoritative source
#  - CACHEROOT: cache files
# After sync, CACHEROOT should contain up-to-date files in and only in the intersection of cache_list and WWWROOT.
# So comes the algorithm:
#  1. Remove files in CACHEROOT but not in cache_list
#  2. Remove files in CACHEROOT but not in WWWROOT or not up-to-date
#  3. Copy non-cached files in cache_list to CACHEROOT, if it exists in WWWROOT

完整的代码 git clone https://gitgeek.net/mirrors/ssd-cache.git