1

这是我的 Yesod 处理程序函数之一中的一些代码:

import qualified Data.Text.Lazy             as LT
import qualified Data.Text.Lazy.Builder     as TLB

SomeRouteR= do
    -- ................
    code <- someFuncAccessDB
    render <- getUrlRenderParams
    let tmpl = $(textFileReload "templates/some.txt")
        sms_content = LT.toStrict $ TLB.toLazyText $ tmpl render
    $(logDebug) $ "trying to send SMS: " `mappend` sms_content
    -- ....

'some.txt' 包含一些行,例如:

the code is #{code}

但是 logDebug 行报告“sms_content”不会根据“code”的新值而改变。也就是说,当在另一个新请求中,“code”的值发生更改时,“sms_content”仍然具有上次请求中的旧值。Yesod 似乎缓存了“sms_content”的最后一个值。

我的错误是什么?

编辑:当我将 textFileReload 更改为 textFile 时,问题就消失了。所以我必须误解这里的“重新加载”是什么意思。谁能给我一些线索?

4

0 回答 0