根据文件的WebDav属性,我使用ETag将元数据放在服务器的文件和文件夹以及缓存中,以避免对服务器的不必要请求。
基本上,我发送一个头请求并检查ETag是否与本地的匹配。如果没有,那么我将发送一个更大、更慢的PROPFIND方法来检索其他属性。
我构建这个缓存的想法是,每次修改文件时都会更改ETag,包括修改、添加或删除元数据时。
然而,我最近发现情况并非如此:
因为如果ETag更改,客户端可能被迫提示用户或丢弃已更改的内容,因此WebDAV服务器不应更改具有未更改的主体和位置的资源的ETag (或最后修改的时间)。ETag表示资源的主体或内容的状态。没有类似的方法来判断属性是否改变了。
(RFC 4918,http://www.webdav.org/specs/rfc4918.html#etag,重点雷)
由于每当属性更改时使缓存无效对我来说都很重要,所以我想知道:是否有一种手动指示web服务器更新ETag的方法?
发布于 2012-09-05 17:31:16
有几种不同的选择。如果etag是基于内容生成的(一个糟糕的想法),那么它就更难了。在我们的解决方案中,我们生成了一个不同的标记( ptag),当属性发生变化时我们会更新它,您可以使用PROPFIND查询它,然后在响应中作为X头返回它。如果etag是在PUT上随机生成的,那么您可以再次放置相同的数据,它将给您一个新的etag。
https://stackoverflow.com/questions/11793590
复制相似问题