diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2020-02-02 03:11:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-01 19:11:32 +0000 |
commit | ce7062a422777c00aadf43ad67a90cc8aae689a5 (patch) | |
tree | 1648064ddb7f8d9e5c6b889bed9147db295cb658 /modules/setting | |
parent | 046bb05979b2476d4eef85f2d156ac42310f1a3f (diff) | |
download | gitea-ce7062a422777c00aadf43ad67a90cc8aae689a5.tar.gz gitea-ce7062a422777c00aadf43ad67a90cc8aae689a5.zip |
Cache last commit to accelerate the repository directory page visit (#10069)
* Cache last commit to accelerate the repository directory page visit
* Default use default cache configuration
* add tests for last commit cache
* Simplify last commit cache
* Revert Enabled back
* Change the last commit cache default ttl to 8760h
* Fix test
Diffstat (limited to 'modules/setting')
-rw-r--r-- | modules/setting/cache.go | 54 |
1 files changed, 47 insertions, 7 deletions
diff --git a/modules/setting/cache.go b/modules/setting/cache.go index babb62baea..34a212db18 100644 --- a/modules/setting/cache.go +++ b/modules/setting/cache.go @@ -13,31 +13,71 @@ import ( // Cache represents cache settings type Cache struct { + Enabled bool Adapter string Interval int Conn string - TTL time.Duration + TTL time.Duration `ini:"ITEM_TTL"` } var ( // CacheService the global cache - CacheService *Cache + CacheService = struct { + Cache + + LastCommit struct { + Enabled bool + TTL time.Duration `ini:"ITEM_TTL"` + CommitsCount int64 + } `ini:"cache.last_commit"` + }{ + Cache: Cache{ + Enabled: true, + Adapter: "memory", + Interval: 60, + TTL: 16 * time.Hour, + }, + LastCommit: struct { + Enabled bool + TTL time.Duration `ini:"ITEM_TTL"` + CommitsCount int64 + }{ + Enabled: true, + TTL: 8760 * time.Hour, + CommitsCount: 1000, + }, + } ) func newCacheService() { sec := Cfg.Section("cache") - CacheService = &Cache{ - Adapter: sec.Key("ADAPTER").In("memory", []string{"memory", "redis", "memcache"}), + if err := sec.MapTo(&CacheService); err != nil { + log.Fatal("Failed to map Cache settings: %v", err) } + + CacheService.Adapter = sec.Key("ADAPTER").In("memory", []string{"memory", "redis", "memcache"}) switch CacheService.Adapter { case "memory": - CacheService.Interval = sec.Key("INTERVAL").MustInt(60) case "redis", "memcache": CacheService.Conn = strings.Trim(sec.Key("HOST").String(), "\" ") + case "": // disable cache + CacheService.Enabled = false default: log.Fatal("Unknown cache adapter: %s", CacheService.Adapter) } - CacheService.TTL = sec.Key("ITEM_TTL").MustDuration(16 * time.Hour) - log.Info("Cache Service Enabled") + if CacheService.Enabled { + log.Info("Cache Service Enabled") + } + + sec = Cfg.Section("cache.last_commit") + if !CacheService.Enabled { + CacheService.LastCommit.Enabled = false + } + + CacheService.LastCommit.CommitsCount = sec.Key("COMMITS_COUNT").MustInt64(1000) + + if CacheService.LastCommit.Enabled { + log.Info("Last Commit Cache Service Enabled") + } } |