我有一个与S3集成的API,以便上传/下载资源。
我可以成功检索并缓存每个资源的etags。
它们存储为HashMap,其中键是资源的ID(确切地说是UUID),值是从Amazon S3返回的ETag。
作为一个例子,我有一个我的实体的徽标,用户可以在他们认为合适时更新它。
在我看来,只需更新我的HashMap中的条目就可以在PUT请求中刷新etag缓存
这是用Java做的正确方法吗?
我在每个GET请求的开头运行这段代码。
private void validateETag(UUID id, Request rq, Response rs) {
String eTag = rq.headers("If-None-Match");
String cachedETag = etagCache.get(id);
if (eTag != null && cachedETag != null && eTag.equals(cachedETag)) {
rs.header("Cache-Control", "max-age=60");
rs.header(ETAG_KEY, eTag);
halt(304);
}
}