tpl: Use hash for cache key

Use a hash for the cache key, to fix 'file name too long' errors when retreiving from long urls

Fixes #3690
This commit is contained in:
Jake Howard 2017-07-21 12:10:11 +01:00 committed by Bjørn Erik Pedersen
parent dbe63970e0
commit 6cd33f6953

View file

@ -14,8 +14,9 @@
package data
import (
"crypto/md5"
"encoding/hex"
"errors"
"net/url"
"sync"
"github.com/gohugoio/hugo/config"
@ -27,7 +28,8 @@ var cacheMu sync.RWMutex
// getCacheFileID returns the cache ID for a string.
func getCacheFileID(cfg config.Provider, id string) string {
return cfg.GetString("cacheDir") + url.QueryEscape(id)
hash := md5.Sum([]byte(id))
return cfg.GetString("cacheDir") + hex.EncodeToString(hash[:])
}
// getCache returns the content for an ID from the file cache or an error.