Web アプリケーションですべてのリクエストを処理するために、テンプレートに関する通常のコードは次のようになります。
t:= template.New("welcome")
t, _ = t.ParseFiles("welcome.tpl")
t.Execute(w, data)
ParseFiles
毎回かなりの出費だったと思います。テンプレートの再利用は可能ですか?そこで、次のように改善しました。
//templateMap := make(map[string][template])
//...
tplName :="welcome"
t := templateMap[tplName]
if t=nil{
t:= template.New(tplName )
t, _ = t.ParseFiles("welcome.tpl")
templateMap[tplName] = t
}
t.Execute(w, data)
テンプレートをマップまたはキャッシュに入れることで効率を改善することは可能でしょうか? 関数 Execute
がスレッドセーフかどうかも疑問です。
func (t *Template) Execute(wr io.Writer, data interface{}) (err error)