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