gpt4 book ai didi

http-headers - 如何在 Play Framework 中为网址设置 Etag?

转载 作者:行者123 更新时间:2023-12-01 08:50:10 24 4
gpt4 key购买 nike

我已经搜索过在playframework中设置Etag。我得到的只有
1) https://www.playframework.com/documentation/2.0/Assets
2) https://www.playframework.com/documentation/2.0/JavaResponse

第一个选项仅适用于 Assets 或文件。第二个选项不起作用。我只是添加了示例中给出的三个。

最佳答案

Etag 的实际用法在 Play 的 doc for assets 中有所描述。 (您首先链接)以及 Wikipedia Typical usage section .

在 Action 的开始你需要判断请求的资源自上次生成Etag以来是否已经改变,如果是,那么你需要用新的Etag生成新的内容,否则你只返回304 NotModified 响应。

当然,这一切都取决于所请求资源的种类,无论如何,非常干净的样本可能是一个数据库实体,带有一些 ID 和带有最后修改日期/时间的字段:

public static Result eTaggedFoo(Long id) {

Foo foo = Foo.find.byId(id);
if (foo == null) return notFound("Given Foo was not found");

String eTag = DigestUtils.md5Hex(foo.id + foo.lastModification.toString());

String ifNoneMatch = request().getHeader("If-None-Match");
if (ifNoneMatch != null && ifNoneMatch.equals(eTag)) return status(304);

response().setHeader(ETAG, eTag);
return ok("Here you can see the " + foo.name + ", last modified: " + foo.lastModification.toString());

}

关于http-headers - 如何在 Play Framework 中为网址设置 Etag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30259930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com