这是我的 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 时,问题就消失了。所以我必须误解这里的“重新加载”是什么意思。谁能给我一些线索?