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 package data
import ( import (
"crypto/md5"
"encoding/hex"
"errors" "errors"
"net/url"
"sync" "sync"
"github.com/gohugoio/hugo/config" "github.com/gohugoio/hugo/config"
@ -27,7 +28,8 @@ var cacheMu sync.RWMutex
// getCacheFileID returns the cache ID for a string. // getCacheFileID returns the cache ID for a string.
func getCacheFileID(cfg config.Provider, id string) 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. // getCache returns the content for an ID from the file cache or an error.