diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-07-29 14:26:45 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-07-29 14:26:45 +0200 |
commit | 786f72302f65580ca8d1df2132a7756584539ea0 (patch) | |
tree | 0bbf7b6135c6d2c16dce4bdafa6d6d5a13ba69cd /resource | |
parent | 0cae1cf8286b128295057d076c479c929f0febb3 (diff) |
Fix image cache eviction for sites with subdir in baseURL
Fixes #5006
Diffstat (limited to 'resource')
-rw-r--r-- | resource/image_cache.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/resource/image_cache.go b/resource/image_cache.go index 4fb45c17f..e5149e7a2 100644 --- 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() |