我有一个存储在CDN上的大文件要解析。每次我启动我的程序,都会有一个检查来控制CDN文件是否被更新。如果是这样的话,我需要检索这个CDN文件中包含的更新信息。
当前的解决方案是在存储库中也有一个CDN文件的副本,并检查是否有一些操作发生了更改:
不同
are_different_current_and_remote()
{
diff <(curl -s "$2") "$1" > /dev/null
if [ $? != 0 ]; then
return 0
else
return 1
fi
}如果是
。
我发现这个过程效率不高,但我想知道哪一种可能是最好的方法。
我考虑了第二种方法。
curl -s http://remotefile|sha1sum检索CDN中远程文件的校验和,并将其存储在存储库中的文件中,以便下次检查该文件,以查看是否存在AKA更新的差异。我也不太喜欢这个解决方案,但我认为由于存储库中的空间较少,这是一种改进。
你看到更好的方法了吗?非常感谢。
发布于 2020-04-24 08:27:57
获得校验和并与本地计算版本进行比较将是最好的解决方案。在使用curl -s的示例中,仍然需要下载整个文件,然后在本地计算校验和。
我建议每次更新CDN中的文件时计算校验和,并以某种方式将其与文件一起存储在CDN中。一些CDN提供商已经为您这样做了。取决于您的CDN提供者的智能程度,它可以是(一些例子):
将SHA校验和存储在附加的单独文件中的curl -s https://cdn/remotefile.sha1)
X-Checksum-Sha1报头(由于它不检索文件contents).如果在使用软件之前,完整性检查是必需的,那么我建议在客户端也进行类似的缓存,每次获取新文件时,计算校验和并存储它(例如,文件、注册表.)因此,在不需要文件更新的情况下,启动是快速的。
https://stackoverflow.com/questions/61389649
复制相似问题