summaryrefslogtreecommitdiffstats
path: root/modules/setting
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2020-02-02 03:11:32 +0800
committerGitHub <noreply@github.com>2020-02-01 19:11:32 +0000
commitce7062a422777c00aadf43ad67a90cc8aae689a5 (patch)
tree1648064ddb7f8d9e5c6b889bed9147db295cb658 /modules/setting
parent046bb05979b2476d4eef85f2d156ac42310f1a3f (diff)
downloadgitea-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.go54
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")
+ }
}