当客户端与清漆断开连接时终止后端获取

问题描述 投票:0回答:1

我使用清漆作为缓存层,我有一个问题: 当客户端提前关闭与 varnish 的连接(在收到响应之前)时,是否可以关闭后端获取?这样,当浏览器中止请求时,底层后端就可以注意到连接已关闭并停止利用资源?

当我的页面速度变慢并且用户单击各种链接或关闭页面时,我的后端必须处理所有那些已经中止的请求,因此速度会更慢。

我尝试了清漆 6.5 和 7.4.2。在我终止curl请求后,清漆仍然等待后端的响应以可能缓存它,然后它增加

sc_rem_close
指标

varnish
1个回答
0
投票
默认情况下,当客户端连接关闭时,

Varnish HTTP Cache不会立即终止后端请求。该行为可能会缓存未来请求的响应。
但是您可以通过在 VCL(Varnish 配置语言)文件中实现

vcl_backend_response
vcl_backend_error
来自定义此行为。

sub vcl_backend_response {
    if (bereq.is_bgfetch) {
        // That is a background fetch (client has gone)
        // Implement logic here to handle the scenario
    }
}
如果后端请求是后台获取,则

bereq.is_bgfetch
为 true,这意味着客户端已断开连接。然后,您可以决定如何处理这种情况,可能是通过中止后端请求。

© www.soinside.com 2019 - 2024. All rights reserved.