我有一个在Tomcat中运行的Jackrabbit WebDAV服务器,我想知道ETag标头值是如何生成的。什么阶级在生产它?
如何使用基于Jackrabbit存储库中的初始文件及其路径的Java生成它?
预期流程:
- 初始文件上载到服务器
- 如果客户端正在上传新文件:计算 ETag 并将其与服务器上文件的相应 ETag 进行比较。
- 如果值相同 - 不上传文件,向客户端发送响应。如果值 deffer - 替换服务器上的文件。
我相信服务器将使用jcr:etag属性(https://docs.adobe.com/content/docs/en/spec/jcr/2.0/3_Repository_Model.html#3.7.12.1%20mix:etag(,否则会尝试根据时间戳和文件长度生成一些东西。
后来在Jackrabbit源代码中,我发现了这个:
if (length > IOUtil.UNDEFINED_LENGTH && modTime > IOUtil.UNDEFINED_TIME) {
String etag = """ + length + "-" + modTime + """;
context.setETag(etag);
}
地点:modTime = Callendar#getTimeInMillis();
因此,在下一个模式上生成 etag:以字节为单位的大小 -修改日期转换为 Long。