2016-07-27 4 views
0

2つのURLが同じファイルにリダイレクトされている(2つのサーバーで別々にホストされている)とし、URLの1つからファイルをダウンロードしたとします。他のURLをクリックしたときに同じファイルを再度ダウンロードすることは避けられますか(ファイルが存在する場合、システムをチェックインしますか?)ファイルが既にダウンロードされている場合、URLから確認する方法はありますか?

主な目的は、データの使用を最適化し、冗長性を除去することです。

ファイルのmd5チェックについては読んでいますが、ダウンロードせずにインターネット上のファイルのmd5チェックサムを計算することはできますか?

+1

実際にはできません。 – sobolevn

答えて

1

ファイルをダウンロードせずにmd5ハッシュを計算することはできません。

あなたがが何ができるか、リダイレクトされたURLはgeturl()メソッドを使用して、同じであるかどうかを確認することです。

if urlopen(url1).geturl() == urlopen(url2).geturl(): 
    print("It's the same file") 
+0

同じファイルが2つの異なるサーバーでホストされていて、両方のサーバーのurlは異なりますが、同じファイルの場合はどうなりますか? – Stoneman2242

+0

@ Aaron2048残念ながらそれを検出する方法はありません。 –

2

あなたはEtag HTTPヘッダを利用することができます。

ETagは、URLで見つかったリソースの特定の バージョンにWebサーバーによって割り当てられた不透明な識別子です。そのURLのリソース表現 が変更されると、新しいETagが割り当てられます。 ETagsは、指紋に似ており、 の素早く比較して、 リソースの2つの表現が同じかどうかを判断することができます。

しかし

HTTPヘッダ内てETagの使用は、(HTTP 1.1ヘッダの いくつかの他のフィールドと同様に必須ではない)任意です。 ETags が生成される方法は、HTTP仕様で一度も指定されていません。

+0

名前が異なる2つの別々のサーバーでホストされているファイルのETagは同じですか? – Stoneman2242

+0

@ Aaron2048あなたはそれに頼ることはできません。答えに記載されているように、ETagの生成方法は不明です。従って、異なるサーバは異なる方法を使用することができる。 – Leon

関連する問題