我正在使用 WebDav 将元数据放在服务器的文件和文件夹上,并根据文件的 ETag 属性使用缓存以避免对服务器的不必要请求。
基本上,我发送一个 HEAD 请求并检查 ETag 是否与我在本地的那个匹配。如果没有,那么我发送一个更大、更慢的PROPFIND方法来检索其他属性。
我基于每次修改文件时都会更改 ETag 的想法构建此缓存,包括修改、添加或删除元数据时。
但是,我最近发现事实并非如此:
因为如果 ETag 更改,客户端可能会被迫提示用户或丢弃更改的内容,WebDAV 服务器不应更改具有未更改主体和位置的资源的 ETag(或 Last-Modified 时间)。ETag 表示资源的主体或内容的状态。没有类似的方法可以判断属性是否已更改。
(RFC 4918,http://www.webdav.org/specs/rfc4918.html#etag,强调我的)
由于每当属性更改时使缓存失效对我来说很重要,我想知道:有没有办法手动指示 Web 服务器更新 ETag ?