commit dd692c710ad202905df273d9c25e66d332476ac9
parent ed4f1edbd729bf75af89879b76fbad931693cd67
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Fri, 21 Sep 2018 11:01:59 +0200
hugolib: Clear the page cache per render
This is a slight performance optimization with no functional effect.
See #5239
Diffstat:
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/hugolib/pageCache.go b/hugolib/pageCache.go
@@ -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.
diff --git a/hugolib/site.go b/hugolib/site.go
@@ -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