code: func (client *clientImpl) getTagCache() *internal.TagCache {
  	client.tagCacheInit.Do(func() {
  		var dir string
  		switch {
  		case client.CacheDir != "":
  			dir = client.CacheDir
  		case client.Root != "":
  			dir = filepath.Join(client.Root, fs.SiteServiceDir)
  		default:
  			return
  		}
  		parsed, err := url.Parse(client.ServiceURL)
  		if err != nil {
  			panic(err) // the URL has been validated in NewClient already
  		}
  		client.tagCache = internal.NewTagCache(fs.NewFileSystem(dir, ""), parsed.Host)
  	})
  	return client.tagCache
  }
docs: // getTagCache lazy-initializes tagCache and returns it.
  //
  // May return nil if tag cache is disabled.