gpt4 book ai didi

f# - Suave - 控制何时响应为 'cached' 或重新计算

转载 作者:行者123 更新时间:2023-12-04 17:32:17 24 4
gpt4 key购买 nike

我想了解如何控制“缓存”响应与“重新计算”响应的时间。

举个例子:

[<EntryPoint>]
let main [| port |] =

let config =
{ defaultConfig with
bindings = [ HttpBinding.mk HTTP IPAddress.Loopback (uint16 port) ]
listenTimeout = TimeSpan.FromMilliseconds 3000.
}

let appDemo:WebPart =
DateTime.Now.ToString()
|> sprintf "Server timestamp: %s"
|> Successful.OK

startWebServer config appDemo

如果我运行上面的网络服务器并多次点击它,那么每次我都会得到相同的时间戳。我想这是有道理的; appDemo只是一个第一次计算的表达式,以后再也不计算了,对吗?

在这种情况下,我可能想要 appDemo为每个请求“重新计算”。我怎么做?我似乎无法在文档中找到示例。

最佳答案

试试这个 - 虽然不确定它在“惯用的温和”量表上的得分有多高:

let appDemo:WebPart = 
request (fun req ->
DateTime.Now.ToString()
|> sprintf "Server timestamp: %s"
|> Successful.OK)

您看到相同的值是对的,因为它是在评估 appDemo 时捕获的。然而,这是 F# 工作方式的一个属性,与 Suave 缓存它无关。

请注意 WebPart type 是 HttpContext -> Async<HttpContext option> 的别名函数 - 因此它本质上会在每个请求上重新计算,而不是计算一次。

关于f# - Suave - 控制何时响应为 'cached' 或重新计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39931078/

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