2009-06-25 5 views
1

私はC#+ HttpWebRequestを使用しています。 頻繁に更新をチェックする必要があるHTMLページがあります。 古いバージョンのHTMLページ(文字列など)が既にあると仮定した場合、ページ全体をダウンロードしてそのページと比較して、「デルタ」またはページの変更部分のみをダウンロードする方法はありますか古いバージョンですか?- HTMLの変更部分のみをダウンロードするには

+0

プレーンオールのHTTPリクエストではありません。主流がAJAXと呼ぶものを調べることをお勧めします。 – anddoutoi

答えて

2

Webサーバーにその機能が含まれている場合に限り、それは起こりそうもありません。だから、申し訳ありません。

2

特定のページではありません。

しかし、タイムスタンプや何らかの種類のIDに基づいて差異を与える機能を書いた場合は、はいです。これは何も標準的ではありません。シンジケーションを使用してページのフィードを作成するか、必要に応じてWebサービスを作成する必要があります。もちろん、監視したいWebサーバーを制御する必要がありますが、そうでない場合もあります。

0

古いバージョンがあり、サーバーに新しいバージョンがあります。変更されたことを知らずにデルタだけをダウンロードする方法はありますか?あなたはどのような古いバージョンを持っているのか知ることなく、デルタをどのように配信することができますか?

明らかに、ページ全体をダウンロードする方法はありません。または古いバージョンをサーバにアップロードすることもできます(サーバにそれを許可するサービスがあると仮定していますが、それはトラフィックを増加させるだけです)。

1

短い答えは、いいえです。長い答えは、HTMLがバージョンコントロールにあり、ある特定のバージョン番号が与えられているサーバーサイドコードを書くと、現在のバージョンと指定されたバージョンとの間の差分を提供するということです。 HTMLがバージョンコントロールになく、あなたのバージョンを現在のバージョンと比較したいのであれば、クライアント上で比較を行うために現在のバージョンをダウンロードするか、あなたのバージョンをサーバにアップロードして、比較して差を返す明らかに、クライアントに新しいバージョンを再ダウンロードさせるほうが効率的です。

0

私の前の他の回答と同様に、ダウンロードを回避する方法はありません。

ただし、同じ場合は、ページリビジョンごとにハッシュを作成し、現在のハッシュと新しいハッシュを比較することで、htmlを解析することはできません。次に、差分アルゴリズムを使用して 'デルタ'情報のみを抽出します。私は、ほとんどの現代クローラーがこれらのラインに沿って何かをすると思います。

1

IfModifiedSinceのプロパティをHttpWebRequestに設定します。

これは「デルタ」を与えませんが、ページがまったく変更されていない場合は301で返信します。

0

デルタをリクエストしたときに古いバージョンがWebサーバーに保存されていた場合、バージョン番号または変更したバージョンを送信したとします。理論的には、違い。しかし、両方のコピーは、違いが何であるかを誰かが知るために、1台のマシン上になければなりません。

0

HttpWebRequestクラスのAddRangeメソッドを使用できます。 これで、ダウンロードするリソースのバイト範囲を指定できます。 これは、httpダウンロードの中断を継続するためにも使用されます。

これはデルタではありませんが、変更する部分だけをロードするとトラフィックが減少します。

関連する問題