75 lines
1.7 KiB
Go
75 lines
1.7 KiB
Go
package settings_service
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"sync"
|
||
|
|
"time"
|
||
|
|
)
|
||
|
|
|
||
|
|
// SiteConfigCache 站点配置缓存
|
||
|
|
type SiteConfigCache struct {
|
||
|
|
data map[string]string
|
||
|
|
lastUpdate time.Time
|
||
|
|
mutex sync.RWMutex
|
||
|
|
}
|
||
|
|
|
||
|
|
var siteConfigCache = &SiteConfigCache{
|
||
|
|
data: make(map[string]string),
|
||
|
|
}
|
||
|
|
|
||
|
|
// GetSiteConfigCache 获取站点配置缓存
|
||
|
|
func GetSiteConfigCache() map[string]string {
|
||
|
|
siteConfigCache.mutex.RLock()
|
||
|
|
defer siteConfigCache.mutex.RUnlock()
|
||
|
|
|
||
|
|
// 返回缓存的副本,避免外部修改
|
||
|
|
result := make(map[string]string)
|
||
|
|
for k, v := range siteConfigCache.data {
|
||
|
|
result[k] = v
|
||
|
|
}
|
||
|
|
return result
|
||
|
|
}
|
||
|
|
|
||
|
|
// SetSiteConfigCache 设置站点配置缓存
|
||
|
|
func SetSiteConfigCache(data map[string]string) {
|
||
|
|
siteConfigCache.mutex.Lock()
|
||
|
|
defer siteConfigCache.mutex.Unlock()
|
||
|
|
|
||
|
|
// 清空现有缓存
|
||
|
|
siteConfigCache.data = make(map[string]string)
|
||
|
|
|
||
|
|
// 设置新数据
|
||
|
|
for k, v := range data {
|
||
|
|
siteConfigCache.data[k] = v
|
||
|
|
}
|
||
|
|
|
||
|
|
// 更新缓存时间
|
||
|
|
siteConfigCache.lastUpdate = time.Now()
|
||
|
|
}
|
||
|
|
|
||
|
|
// ClearSiteConfigCache 清除站点配置缓存
|
||
|
|
func ClearSiteConfigCache() {
|
||
|
|
siteConfigCache.mutex.Lock()
|
||
|
|
defer siteConfigCache.mutex.Unlock()
|
||
|
|
|
||
|
|
siteConfigCache.data = make(map[string]string)
|
||
|
|
siteConfigCache.lastUpdate = time.Time{}
|
||
|
|
}
|
||
|
|
|
||
|
|
// IsSiteConfigCacheValid 检查缓存是否有效(可选:可以设置缓存过期时间)
|
||
|
|
func IsSiteConfigCacheValid() bool {
|
||
|
|
siteConfigCache.mutex.RLock()
|
||
|
|
defer siteConfigCache.mutex.RUnlock()
|
||
|
|
|
||
|
|
// 如果缓存为空,认为无效
|
||
|
|
if len(siteConfigCache.data) == 0 {
|
||
|
|
return false
|
||
|
|
}
|
||
|
|
|
||
|
|
// 可以在这里添加缓存过期逻辑,比如缓存5分钟后过期
|
||
|
|
// if time.Since(siteConfigCache.lastUpdate) > 5*time.Minute {
|
||
|
|
// return false
|
||
|
|
// }
|
||
|
|
|
||
|
|
return true
|
||
|
|
}
|