Fix image cache eviction for sites with subdir in baseURL - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 786f72302f65580ca8d1df2132a7756584539ea0
DIR parent 0cae1cf8286b128295057d076c479c929f0febb3
HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Sun, 29 Jul 2018 14:26:45 +0200
Fix image cache eviction for sites with subdir in baseURL
Fixes #5006
Diffstat:
M hugolib/page_collections.go | 2 +-
M resource/image_cache.go | 13 ++++++++++++-
2 files changed, 13 insertions(+), 2 deletions(-)
---
DIR diff --git a/hugolib/page_collections.go b/hugolib/page_collections.go
@@ -322,7 +322,7 @@ func (c *PageCollections) clearResourceCacheForPage(page *Page) {
first := page.Resources[0]
dir := path.Dir(first.RelPermalink())
dir = strings.TrimPrefix(dir, page.LanguagePrefix())
- // This is done to keep the memory usage in check when doing live reloads.
+ dir = strings.TrimPrefix(dir, page.s.BaseURL.Path())
page.s.ResourceSpec.DeleteCacheByPrefix(dir)
}
}
DIR diff --git a/resource/image_cache.go b/resource/image_cache.go
@@ -33,7 +33,7 @@ type imageCache struct {
func (c *imageCache) isInCache(key string) bool {
c.mu.RLock()
- _, found := c.store[key]
+ _, found := c.store[c.normalizeKey(key)]
c.mu.RUnlock()
return found
}
@@ -41,6 +41,7 @@ func (c *imageCache) isInCache(key string) bool {
func (c *imageCache) deleteByPrefix(prefix string) {
c.mu.Lock()
defer c.mu.Unlock()
+ prefix = c.normalizeKey(prefix)
for k := range c.store {
if strings.HasPrefix(k, prefix) {
delete(c.store, k)
@@ -48,6 +49,16 @@ func (c *imageCache) deleteByPrefix(prefix string) {
}
}
+func (c *imageCache) normalizeKey(key string) string {
+ // It is a path with Unix style slashes and it always starts with a leading slash.
+ key = filepath.ToSlash(key)
+ if !strings.HasPrefix(key, "/") {
+ key = "/" + key
+ }
+
+ return key
+}
+
func (c *imageCache) clear() {
c.mu.Lock()
defer c.mu.Unlock()