package cblocks import ( "html/template" "sync" ) type cache struct { CacheBlock1 map[string]template.HTML CacheBlock2 map[string]template.HTML CacheBlock3 map[string]template.HTML CacheBlock4 map[string]template.HTML CacheBlock5 map[string]template.HTML } type CacheBlocks struct { mutex *sync.Mutex cacheBlocks map[string]cache } func New() *CacheBlocks { return &CacheBlocks{ mutex: &sync.Mutex{}, cacheBlocks: map[string]cache{}, } } func (this *CacheBlocks) prepare(host string) { if _, ok := this.cacheBlocks[host]; !ok { this.cacheBlocks[host] = cache{ CacheBlock1: map[string]template.HTML{}, CacheBlock2: map[string]template.HTML{}, CacheBlock3: map[string]template.HTML{}, CacheBlock4: map[string]template.HTML{}, CacheBlock5: map[string]template.HTML{}, } } } func (this *CacheBlocks) Reset(host string) { this.mutex.Lock() if _, ok := this.cacheBlocks[host]; ok { delete(this.cacheBlocks, host) } this.mutex.Unlock() }