hugolib: Clear the page cache per render
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 21 Sep 2018 09:01:59 +0000 (11:01 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 21 Sep 2018 09:21:15 +0000 (11:21 +0200)
This is a slight performance optimization with no functional effect.

See #5239

hugolib/pageCache.go
hugolib/site.go

index 15598a4f0546d6e9716a3316b5e96e2fc0ee234e..485da4ba3e457dbf887a330f2efa845f763df739 100644 (file)
@@ -44,6 +44,12 @@ func newPageCache() *pageCache {
        return &pageCache{m: make(map[string][]pageCacheEntry)}
 }
 
+func (c *pageCache) clear() {
+       c.Lock()
+       defer c.Unlock()
+       c.m = make(map[string][]pageCacheEntry)
+}
+
 // get/getP gets a Pages slice from the cache matching the given key and
 // all the provided Pages slices.
 // If none found in cache, a copy of the first slice is created.
index 59f0a9002bd8216d944657091bdf2d1643b00a4e..14f51f97843a051b3ee61745ba6e6a1990b7f12f 100644 (file)
@@ -1012,6 +1012,8 @@ func (s *Site) setupSitePages() {
 }
 
 func (s *Site) render(config *BuildCfg, outFormatIdx int) (err error) {
+       // Clear the global page cache.
+       spc.clear()
 
        if outFormatIdx == 0 {
                if err = s.preparePages(); err != nil {
@@ -1514,8 +1516,6 @@ func (s *Site) resetBuildState() {
 
        s.expiredCount = 0
 
-       spc = newPageCache()
-
        for _, p := range s.rawAllPages {
                p.subSections = Pages{}
                p.parent = nil