如何解决进入模板生命周期
在Go模板中,我有一个名为“资产”的函数:
<html>
{{ asset "application.css" }}
</html>
此函数打开一个webpack manifest.json并找到相应的哈希文件:
func asset(s string) string {
data,_ := ioutil.ReadFile("manifest.json")
// do stuff with data
return filename
}
我的问题是关于绩效的影响。什么时候调用此函数?每次执行模板时都要打开清单文件;每次用户访问该页面?还是在最初的template.New("").ParseFiles()
通话中被调用?
我最好在应用程序启动时打开文件,并将文件名映射存储在全局变量中吗?这对我来说更有意义,但是处理此问题的最佳方法是什么?
解决方法
每次执行模板时都会调用注册的asset()
函数,因此每次打开并读取文件"manifest.json"
。
如果其内容不变,则可以在首次使用时或在应用程序启动时更好地加载一次,这可能是在程序包初始化期间(在程序包init()
函数中)。
如果执行此操作,则可以将filename
传递给模板执行,因此它甚至不需要注册自定义函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。