3

私は WebDav を使用して、ファイルの ETag プロパティに基づいて、サーバーへの不要な要求を避けるためのキャッシュと共に、サーバーのファイルとフォルダーにメタデータを配置しています。

基本的には、HEAD リクエストを送信し、ETag がローカルのものと一致するかどうかを確認します。そうでない場合は、より大きくて低速のPROPFINDメソッドを送信して、他のプロパティを取得します。

このキャッシュは、メタデータが変更、追加、または削除されたときを含め、ファイルが変更されるたびに ETag が変更されるという考えに基づいて構築されました。

しかし、私は最近、そうではないことを発見しました:

ETag が変更された場合、クライアントは強制的にユーザーにプロンプ​​トを表示したり、変更されたコンテンツを破棄したりする可能性があるため、WebDAV サーバーは本体と場所が変更されていないリソースの ETag (または Last-Modified 時刻) を変更すべきではありません。ETag は、リソースの本文またはコンテンツの状態を表します。プロパティが変更されたかどうかを確認する同様の方法はありません

(RFC 4918、http: //www.webdav.org/specs/rfc4918.html#etag 、強調鉱山)

プロパティが変更されるたびにキャッシュを無効にすることは私にとって重要なので、私は疑問に思っていました.ETagを更新するようにWebサーバーに手動で指示する方法はありますか?

4

1 に答える 1

2

いくつかの異なるオプションがあります。etagがコンテンツに基づいて生成される場合(悪い考え)、それはより困難です。このソリューションでは、プロパティが変更されたときに更新する別のタグ(ptag)を生成し、PROPFINDを使用してクエリを実行し、応答でX-PTagヘッダーとして返しました。etagがPUTでランダムに生成された場合、同じデータを再度PUTすると、新しいetagが得られます。

于 2012-09-05T17:31:16.763 に答える