Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中刷新资源的ETag_Java_Amazon S3_Etag_Spark Java - Fatal编程技术网

在Java中刷新资源的ETag

在Java中刷新资源的ETag,java,amazon-s3,etag,spark-java,Java,Amazon S3,Etag,Spark Java,我有一个与S3集成的API,用于上传/下载资源 我可以成功地检索和缓存每个资源的ETag 它们存储为HashMap,其中键是资源的ID(确切地说是UUID),值是amazons3返回的ETag 例如,我有一个我的一个实体的徽标,用户可以在他们认为合适的时候更新它 在我看来,刷新etag缓存应该在PUT请求中发生,只需更新HashMap中的条目即可 在Java中,这是正确的方法吗 我在每个GET请求的开头运行这段代码 private void validateETag(UUID id, Reque

我有一个与S3集成的API,用于上传/下载资源

我可以成功地检索和缓存每个资源的ETag

它们存储为HashMap,其中键是资源的ID(确切地说是UUID),值是amazons3返回的ETag

例如,我有一个我的一个实体的徽标,用户可以在他们认为合适的时候更新它

在我看来,刷新etag缓存应该在PUT请求中发生,只需更新HashMap中的条目即可

在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);
    }
}

您可以将缓存的ETag ID与缓存对象本身一起更新。由于您必须处理丢失的本地缓存对象,因此在创建缓存对象之前或之后执行此操作并不重要,但我想在创建缓存对象之后会产生较少的回迁。因此,我正确地认为,最好的做法是对资源的PUT请求?我刚才说的是本地缓存,即生成临时文件的位置。这取决于谁更新S3和谁下载S3。如果推送数据,可以生成一个新的缓存条目,将其放入,然后更新本地etag。在所有情况下,你都有比赛。