2012-08-03 65 views
3

我正在使用WebDav将元数据放在服务器的文件和文件夹上,以及缓存以避免对服务器的不必要的请求,这取决于文件的ETag属性。更新HTTP ETag

基本上,我发送一个HEAD请求,并检查ETag是否与我在本地的相匹配。如果没有,那么我发送一个更大,更慢的PROPFIND方法来检索其他属性。

我构建这个缓存​​的想法是,每次修改文件时都会更改ETag,包括修改,添加或删除元数据时。

不过,我最近发现,情况并非如此:

因为客户可能会被迫提示用户或扔掉改变 的内容,如果ETag的变化,WebDAV服务器应该不会改变 ETag(或最后修改时间)对于具有未更改的主体和位置的资源。 ETag代表资源内容的状态或 。 没有类似的方法可以判断 属性是否已更改

(RFC 4918,http://www.webdav.org/specs/rfc4918.html#etag,重点煤矿)

因为每当性质改变无效的缓存是对我很重要,我想知道:有没有办法手动指示web服务器更新的ETag ?

回答

2

有几个不同的选项。如果etag是基于内容生成的(一个坏主意),那么它就更加困难。在我们的解决方案中,我们生成了一个不同的标签(ptag),当属性发生变化时我们会更新它,并且您可以用PROPFIND查询它,然后我们将其作为X-PTag标题在响应中返回。如果etag是在PUT上随机生成的,那么您可以再次输入相同的数据,这会给您一个新的etag。