[go] go 언어의 text/template/exec 패키지를 사용하여 템플릿 캐시 삭제 방법

Golang은 템플릿을 렌더링하기 위해 text/template 및 html/template 패키지를 사용합니다. 이 패키지들은 템플릿 캐싱을 지원하여 효율적인 템플릿 렌더링을 가능케 합니다. 하지만 때때로 템플릿이 변경되었을 때 이러한 캐시를 업데이트해야 하는 경우가 있습니다.

이를 위해 text/templatehtml/template 패키지에서는 template.New()template.ParseFiles() 함수로 새로운 템플릿을 만들 때마다 고유한 캐시 키를 생성합니다. 이 키를 사용하여 템플릿 캐시를 삭제할 수 있습니다.

예제 코드

다음은 템플릿 캐시를 삭제하는 예제 코드입니다.

package main

import (
    "log"
    "text/template"
    "os"
)

func main() {
    tmpl, err := template.New("example").ParseFiles("example.tmpl")
    if err != nil {
        log.Fatal(err)
    }

    // 템플릿 실행
    err = tmpl.Execute(os.Stdout, nil)
    if err != nil {
        log.Fatal(err)
    }

    // 템플릿 캐시 삭제
    deleteCachedTemplate(tmpl, "example.tmpl")
}

// 템플릿 캐시 삭제 함수
func deleteCachedTemplate(t *template.Template, filename string) {
    delete(t.Templates(), filename)
}

위의 예제에서 deleteCachedTemplate 함수는 특정 파일에 해당하는 템플릿 캐시를 삭제합니다. 이렇게 하면 해당 템플릿이 변경되었을 때 다음에 실행될 때 새로운 템플릿이 다시 파싱되고 캐시됩니다.

결론

Golang의 text/templatehtml/template 패키지를 사용하여 템플릿 캐시를 효율적으로 관리할 수 있습니다. 캐시를 삭제하여 템플릿 변경을 즉시 반영할 수 있으며, 이를 통해 웹 애플리케이션의 성능과 유지보수성을 향상시킬 수 있습니다.