gpt4 book ai didi

express - etag 如何在 expressjs 中工作

转载 作者:行者123 更新时间:2023-12-02 06:34:44 25 4
gpt4 key购买 nike

Expressjs 自动发送 etags。我想知道etag是如何生成的。它是基于get例程动态生成的内容。或者有没有办法我可以维护它,甚至不经历生成内容的过程(动态内容 - 来自数据库)并将etag传回。

可能是一个中间件,它首先检查它是否是有效的 session id,然后传回客户端提供的相同 etag,或者可能基于 url + session id..这样它将是唯一的。并在那里结束请求,而不是通过整个数据库调用和所有这些东西。在这种情况下,我需要知道客户正在调用 304 电话。

我可以使用 expires 标签。但是当 session 结束时。如果有人打开它不应该允许的 url。所以我认为etag也应该基于 session ID。如果修改后如何在这种动态内容场景中工作。可以用吗。

最佳答案

在撰写本文时(2014 年 7 月 8 日),弱 ETag 是使用 CRC32 生成的。 ( source ) 和强 ETag 是使用 MD5 ( source ) 生成的。

Based on what one of the contributors to Express says ,您可以通过以下方式指定是使用强 ETag 还是弱 ETag:

app.enable('etag') // use strong etags
app.set('etag', 'strong') // same
app.set('etag', 'weak') // weak etags

看起来您还可以指定自己的自定义函数来执行 ETag,如下所示:
app.set('etag', function(body, encoding){ /* return valid etag */ });

NPM 包 fresh也值得一看,因为它在 Express 中用于新鲜度检查( source1source2 )。

至于您的应用程序,请记住您可以覆盖任何响应 header ,例如 res.set('etag', 'my-awesome-etag-value')在调用 res.send() 之前(或类似功能)。进一步的讨论(包括优点和缺点)可以在这里找到: https://github.com/visionmedia/express/issues/2129#issue-34053148

关于express - etag 如何在 expressjs 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542959/

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