假设我有两个重定向到同一文件的URL(分别托管在2台服务器上),我从其中一个url下载了该文件。当我点击另一个网址时,是否可以避免再次下载同一个文件(如果文件存在则检查系统)?
主要目标是优化数据使用并消除冗余。
我读过有关文件的md5检查,但我可以在互联网上计算md5校验和,而无需下载吗?
答案 0 :(得分:2)
您可以使用Etag HTTP标头。
ETag是由Web服务器分配给特定的不透明标识符 在URL处找到的资源的版本。如果是资源表示 在该URL发生变化时,会分配一个新的不同的ETag。用过的 以这种方式,ETag类似于指纹,它们可以是 快速比较,以确定是否两个表示 资源是一样的。
然而
在HTTP标头中使用ETag是可选的(不是强制性的 HTTP 1.1标头的其他一些字段)。 ETags的方法 生成从未在HTTP规范中指定。
答案 1 :(得分:1)
如果没有下载文件,就无法计算md5哈希值。
您可以做的是使用geturl()
方法检查重定向的网址是否相同:
if urlopen(url1).geturl() == urlopen(url2).geturl():
print("It's the same file")