Suave - 控制何时“缓存”或重新计算响应

2023-12-22

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

举个例子:

[<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 缓存它无关。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Suave - 控制何时“缓存”或重新计算响应 的相关文章

  • 按属性值选择 XML 节点

  • `ImmutableSortedSet` 和 fsharp `Set` 有什么区别?

    BCL引入了一组Immutable Collections http blogs msdn com b bclteam archive 2012 12 18 preview of immutable collections released
  • 什么是错误“类型实例化涉及 byref 类型。” F# 中的解决方法是什么

    我有一些代码包装 TA Lib 很多包装器非常相似 let sma timePeriod int data float let mutable outStartIndex 0 let mutable outNbElement 0 let m
  • F# 编码练习

    我一直在 Visual Studio 2010 中涉足 F 我是一名在 C 和 Java 等面向对象语言方面拥有更多代码 架构设计经验的开发人员 为了扩展我的技能并帮助做出更好的决策 我正在尝试使用不同的语言来做不同的事情 特别是掌握使用函
  • F# 对于 OO 或命令式来说缺少什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • F# 和模糊逻辑

    我知道这可能听起来很奇怪 但我想知道 Microsoft Visual F 正在进入的这个新世界中的一件事 这种语言有很多应用 我要学习 关于解析 函数式编程 结构化编程 但是人工智能呢 模糊逻辑有什么应用吗 F 是一种适合模糊逻辑应用程序
  • 何时评估 F# 函数调用;懒惰地还是立即地?

    F 中的柯里化函数 我知道传入参数子集会产生一个带有预设的函数 我只是想知道传递所有参数是否有什么不同 例如 let addTwo x y x y let incr a addTwo 1 let added addTwo 2 2 incr是
  • 如何使用 .Net Core 和 VSCode 在调试模式下执行测试?

    如何使用 Net Core 和 VSCode 在调试模式下执行测试 我当前正在命令行上运行以下命令 dotnet Test 但是 这不是在调试模式下执行测试 我要附加调试器吗 如果是这样 怎么办 如有必要 请将测试项目转换为控制台应用程序
  • 如何从引用的表达式匹配中获取模块、函数等的 F# 名称

    我继续开发 F 引用表达式的打印机 它不一定是完美的 但我想看看有什么可能 中的活跃模式Microsoft FSharp Quotations Patterns and Microsoft FSharp Quotations Derived
  • true 和布尔列表 f# 的长度

    直接使用递归 写一个函数truesAndLength bool list gt int int那 返回列表的长度 在该对的第一个组件中 以及列表的数量 列表中正确的元素 在第二个组件中 你的函数必须只迭代 遍历列表的元素一次 请勿使用 Li
  • 您可以使用 .net core 运行 F# 脚本文件 (.fsx) 吗?

    是否可以使用 net core 运行 fsx 文件 相当于fsharpi在单声道上 它在 NETCore v3 0 或更高版本中开箱即用 cat hello fsx usr bin env fsharpi printfn hello wor
  • 了解 F# 尾递归

    最近在学习F 我尝试以不同的方式解决问题 像这样 0 1 2 3 4 5 6 7 8 gt 0 1 2 3 4 5 6 7 8 head recursive let rec toTriplet v1 list match list with
  • F# 匹配 ->

    我想做类似的东西 Nemerle 语法 def something match STT 1 with st Summ 2 with st AVG gt st summbycol counter STT 在 F 上 那么 F 是真的吗 没有对
  • 合并具有公共字段的列表的最快方法?

    我正在学习 F 并且正在做赔率比较服务 ala www bestbetting com 以将理论付诸实践 到目前为止 我有以下数据结构 type price Bookie string Odds float32 type selection
  • 如何从 f# 返回一个空元组到 c#? [复制]

    这个问题在这里已经有答案了 我有这个类型正确的 C 函数 static System Tuple
  • F# 核心库源代码有一个用于将元组编译为结构的标志,但我无法使其工作

    这是后续问题这个提议 https fslang uservoice com forums 245727 f language suggestions 6148669 short tuples compiled as structs up t
  • 在类型扩展中重载运算符

    好的 所以我基本上尝试将绑定运算符添加到选项类型中 似乎我尝试的所有内容都有一些不明显的警告阻止我这样做 我怀疑这与 NET 类型系统的限制有关 并且可能与类型类无法在用户代码中实现的原因相同 不管怎样 我已经尝试了一些事情 首先 我尝试了
  • 使用反射创建 Action<'T> 的实例

    我将如何创建一个实例Action lt T gt 使用反射 这是我所拥有的 let makeAction typ Type f T gt unit let actionType typedefof

随机推荐

  • 使用 vb.net 或 c# 的 Textbox_KeyPress 事件

    我的要求是我正在尝试为我的母语开发一个文本编辑器 也就是说 我正在尝试使用 unicode 字符开发泰米尔语文本编辑器 当我按下键盘上的按键 例如英文字符 k时 我想替换两个字符 例如 H0b95 H0bcd 我如何实施这个概念 是否可能
  • 在 MySQL 中搜索表情符号

    我有一个看起来像这样的字符串 现在 当我的应用程序将此字符串推入其 utf8 mysql 数据库列时 它在 MySQL CLI 中看起来像这样 如果我选择convert mystring using utfmb4 它看起来仍然是这个样子 如
  • 如何惯用地打破嵌套并行 (OpenMP) Fortran 循环?

    这是顺序代码 do i 1 n do j i 1 n if some condition i j then result here s result return end if end do end do 除了以下之外 是否有更清晰的方法来
  • /usr/bin/ld:错误:找不到-lboost_unit_test_framework

    这个标题提出了很多问题 但我发现没有适合我的答案 我有以下代码 define BOOST TEST DYN LINK define BOOST TEST MODULE Hello include
  • 如何在 Intellij IDEA 中关闭注释的错误验证?

    我有一个使用 Eclipse 的开发人员 它会在我们的 JUnit 测试中自动在各个位置插入注释 但是 当我在IDEA中打开测试时 注释带有红色下划线 并且注释上写着 实现接口方法时不允许 Override 我不太关心注释 因此 它不允许我
  • 我是否正确使用了 IRepository?

    我希望在一个小项目中使用 IRepository 模式 如果重要的话 由 NHibernate 支持 该域是一个简单的域 故意这样让我能够专注于理解 IRepository 模式 唯一的域类是Movie 其属性为Year Genre and
  • Haskell id 函数的用途

    有哪些用途id函数 http www zvon org other haskell Outputprelude id f html在哈斯克尔 作为一个论据很有用高阶函数 http www haskell org haskellwiki Hi
  • WinRT / Win8 中的 HttpClient 缺少响应标头

    我在 Windows 8 应用程序中使用 HttpClient 它似乎故意在响应中隐藏自定义标头 例如 我们收到的响应有一个名为的自定义标头 示例标题 123 我期望响应内容中的标头将包含值为 123 的 Sample Header var
  • oracle中使用sql的动态列

    我有以下表格示例 Thera可以是无限的分支机构和客户 我需要对这些分支机构进行分组并计算其客户数量 然后用不同的列显示它 BRANCHNAME CUSTOMERNO 100 1001010 100 1001011 103 1001012
  • 如何在 Laravel Blade 中拆分 foreach 循环

    在 Blade 中使用雄辩搜索时 有没有办法分割它的结果 我问 因为我有一个引导轮播 它是 2 张幻灯片 每张幻灯片分为 3 列 我希望每张幻灯片都填写以下搜索的结果 alsoBought Game where category id sh
  • 类型不匹配:无法从 StringBuilder 转换为 String

    此方法返回给定 URL 的源 private static String getUrlSource String url try URL localUrl null localUrl new URL url URLConnection co
  • 如何修复针对 WASM 时“构建 OpenSSL 时出错”的问题?

    我正在使用 Rust 构建一个使用 openssl 板条箱的 Web 程序集项目 现在 当我想要构建应用程序时 问题出现了 它失败并显示以下输出 INFO Checking for the Wasm target INFO Compilin
  • 向 LinkedIn 发送 HEAD 请求时出现 999 错误代码

    我们在 PHP 应用程序中使用curl HEAD 请求来验证通用链接的有效性 我们检查状态代码只是为了确保用户输入的链接有效 除 LinkedIn 外 所有网站的链接均已成功 虽然它似乎可以在本地 Mac 上运行 但当我们尝试从任何 Ubu
  • 将列表写入列

    我有一个Python数据列表 1 2 3 4 5 我想通过以下方式将此数据作为列读入文件中 1 2 3 4 5 然后我想要我的下一个清单 6 7 8 9 10 要添加到其中 带有选项卡 1 6 2 7 3 8 4 9 5 10 等等 谁能帮
  • GruntFile 返回 [对象,对象]

    我正在使用粉底 jekyll样板文件 https github com daigofuji jekyll foundation 5 starter 每当我运行 grunt 时 它只会在 style css 中返回以下内容 object Ob
  • r 中的错误消息:没有要聚合的行[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在运行一个用 r 语言编写的程序 该程序旨在将许多 csv 数据文件编译成一个 csv 文件 然后生成一个输出文件 其中包含对组合文件中
  • 在 Google Cloud 中安装 Label Studio 并使其可通过公共 IP 使用

    我在 Google Cloud 中有一个使用 Ubuntu 20 04 LTS 的虚拟机实例 我将其设置为允许 HTTP 流量 我需要设置 Label Studio https github com heartexlabs label st
  • IE 8.渐变背景+图像

    如何让IE8显示渐变背景 图像 这在其他浏览器中是可行的 但在 IE 中不起作用 在其他浏览器中 Opera background image url gxt images my eye png o linear gradient top
  • Ionic 2 - 同时多个菜单(右 - 左)

    情况 我的 Ionic 2 应用程序中有一个可用的右侧菜单 我需要添加一个左侧菜单 我已经尝试过 但到目前为止还没有成功 这是我的尝试 THE CODE 使用此代码 右侧菜单可以正常工作 但左侧菜单不会出现 应用程序 html
  • Suave - 控制何时“缓存”或重新计算响应

    我想了解如何控制响应何时 缓存 以及何时 重新计算 举个例子