首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查一个大的CDN文件是否在没有存储库和没有数据库的情况下被更新?

问如何检查一个大的CDN文件是否在没有存储库和没有数据库的情况下被更新?
EN

Stack Overflow用户
提问于 2020-04-23 14:28:16
回答 1查看 234关注 0票数 0

我有一个存储在CDN上的大文件要解析。每次我启动我的程序,都会有一个检查来控制CDN文件是否被更新。如果是这样的话,我需要检索这个CDN文件中包含的更新信息。

当前的解决方案是在存储库中也有一个CDN文件的副本,并检查是否有一些操作发生了更改:

  • 下载CDN文件本地
  • 测试如果本地和CDN文件与ShellScript

不同

代码语言:javascript
复制
are_different_current_and_remote()
{
    diff <(curl -s "$2") "$1" > /dev/null
    if [ $? != 0 ]; then
        return 0
    else
        return 1
    fi
}

如果是

  • ,则CDN文件将替换本地

。

我发现这个过程效率不高,但我想知道哪一种可能是最好的方法。

我考虑了第二种方法。

  • 使用此命令curl -s http://remotefile|sha1sum检索CDN中远程文件的校验和,并将其存储在存储库中的文件中,以便下次检查该文件,以查看是否存在AKA更新的差异。

我也不太喜欢这个解决方案,但我认为由于存储库中的空间较少,这是一种改进。

你看到更好的方法了吗?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 08:27:57

获得校验和并与本地计算版本进行比较将是最好的解决方案。在使用curl -s的示例中,仍然需要下载整个文件,然后在本地计算校验和。

我建议每次更新CDN中的文件时计算校验和,并以某种方式将其与文件一起存储在CDN中。一些CDN提供商已经为您这样做了。取决于您的CDN提供者的智能程度,它可以是(一些例子):

将SHA校验和存储在附加的单独文件中的curl -s https://cdn/remotefile.sha1)

  • some

  • 比资产本身更小,下载速度也更快(因此您将进行 CDN提供程序在每次上传文件时计算校验和,然后响应HTTP请求将其公开为自定义X-Checksum-Sha1报头(由于它不检索文件contents).
  • some CDN提供程序),它具有单独的REST,允许存储和检索有关文件的元数据,您可以利用它来存储校验和、最后更新日期、版本标记或其他什么东西。

如果在使用软件之前,完整性检查是必需的,那么我建议在客户端也进行类似的缓存,每次获取新文件时,计算校验和并存储它(例如,文件、注册表.)因此,在不需要文件更新的情况下,启动是快速的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61389649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档