1
0
mirror of https://github.com/astaxie/beego.git synced 2024-06-26 16:54:13 +00:00

set static file cahce limit:file size & file count

This commit is contained in:
jianzhiyao 2020-05-09 17:57:00 +08:00
parent af19822293
commit 0307c8b110

View File

@ -105,8 +105,15 @@ type serveContentReader struct {
*bytes.Reader *bytes.Reader
} }
const (
//max file size to cache,default: 3m
MaxCacheFileSize int = 1024 * 1024 * 2
//max file count to cache,default: 100
MaxCacheFileCount int = 100
)
var ( var (
staticFileLruCache, _ = lru.New(1000) staticFileLruCache, _ = lru.New(MaxCacheFileCount)
lruLock sync.RWMutex lruLock sync.RWMutex
) )
@ -139,8 +146,10 @@ func openFile(filePath string, fi os.FileInfo, acceptEncoding string) (bool, str
return false, "", nil, nil, err return false, "", nil, nil, err
} }
mapFile = &serveContentHolder{data: bufferWriter.Bytes(), modTime: fi.ModTime(), size: int64(bufferWriter.Len()), originSize: fi.Size(), encoding: n} mapFile = &serveContentHolder{data: bufferWriter.Bytes(), modTime: fi.ModTime(), size: int64(bufferWriter.Len()), originSize: fi.Size(), encoding: n}
if isOk(mapFile, fi) {
staticFileLruCache.Add(mapKey, mapFile) staticFileLruCache.Add(mapKey, mapFile)
} }
}
reader := &serveContentReader{Reader: bytes.NewReader(mapFile.data)} reader := &serveContentReader{Reader: bytes.NewReader(mapFile.data)}
return mapFile.encoding != "", mapFile.encoding, mapFile, reader, nil return mapFile.encoding != "", mapFile.encoding, mapFile, reader, nil
@ -149,6 +158,8 @@ func openFile(filePath string, fi os.FileInfo, acceptEncoding string) (bool, str
func isOk(s *serveContentHolder, fi os.FileInfo) bool { func isOk(s *serveContentHolder, fi os.FileInfo) bool {
if s == nil { if s == nil {
return false return false
} else if s.size > int64(MaxCacheFileSize) {
return false
} }
return s.modTime == fi.ModTime() && s.originSize == fi.Size() return s.modTime == fi.ModTime() && s.originSize == fi.Size()
} }