diff --git a/page.go b/page.go index 306f09a..f9fc23b 100644 --- a/page.go +++ b/page.go @@ -120,7 +120,7 @@ const packageTemplateString = `
To import this package, add the following line to your code:
import "{{.Repo.GopkgPath}}"- {{if .PackageName}}
Refer to it as {{.PackageName}}.{{end}} + {{if .Package.Name}}
Refer to it as {{.Package.Name}}.{{end}}
For more details, see the API documentation.
@@ -209,49 +209,43 @@ func init() { } } -type packageData struct { +type templateData struct { Repo *Repo LatestVersions VersionList // Contains only the latest version for each major - PackageName string // Actual package identifier as specified in https://golang.org/ref/spec#PackageClause - Synopsis string - GitTreeName string + Package *packageData } -type cacheEntry struct { - t time.Time - pd *packageData +type packageData struct { + Name string // Actual package identifier as specified in https://golang.org/ref/spec#PackageClause + Synopsis string + Timestamp time.Time } -var cache map[string]*cacheEntry = make(map[string]*cacheEntry) -var cacheLock sync.RWMutex +var packageDataCache map[string]*packageData = make(map[string]*packageData) +var packageDataCacheLock sync.RWMutex -const cacheTTL = 1 * time.Hour +const packageDataCacheTTL = 1 * time.Hour -func cacheGet(name string) *packageData { - cacheLock.RLock() - defer cacheLock.RUnlock() - if entry, ok := cache[name]; ok { - if time.Since(entry.t) < cacheTTL { - return entry.pd +func getPackageData(name string) *packageData { + packageDataCacheLock.RLock() + defer packageDataCacheLock.RUnlock() + if pd, ok := packageDataCache[name]; ok { + if time.Since(pd.Timestamp) < packageDataCacheTTL { + return pd } - log.Println("ignoring expired cache entry for", name) } return nil } -func cacheSet(name string, pd *packageData) { - cacheLock.Lock() - defer cacheLock.Unlock() - if entry, ok := cache[name]; ok { - if time.Since(entry.t) < cacheTTL { +func setPackageData(name string, pd *packageData) { + packageDataCacheLock.Lock() + defer packageDataCacheLock.Unlock() + if cpd, ok := packageDataCache[name]; ok { + if time.Since(cpd.Timestamp) < packageDataCacheTTL { return } - log.Println("updating expired cache entry for", name) - } - cache[name] = &cacheEntry{ - t: time.Now(), - pd: pd, } + packageDataCache[name] = pd } // SearchResults is used with the godoc.org search API @@ -264,33 +258,35 @@ type SearchResults struct { var regexpPackageName = regexp.MustCompile(`