mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 07:40:56 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package caches
 | 
						||
 | 
						||
import (
 | 
						||
	"github.com/TeaOSLab/EdgeNode/internal/utils"
 | 
						||
	"time"
 | 
						||
)
 | 
						||
 | 
						||
type ItemType = int
 | 
						||
 | 
						||
const (
 | 
						||
	ItemTypeFile   ItemType = 1
 | 
						||
	ItemTypeMemory ItemType = 2
 | 
						||
)
 | 
						||
 | 
						||
// 计算当前周
 | 
						||
// 不要用YW,因为需要计算两周是否临近
 | 
						||
func currentWeek() int32 {
 | 
						||
	return int32(time.Now().Unix() / 86400)
 | 
						||
}
 | 
						||
 | 
						||
type Item struct {
 | 
						||
	Type       ItemType `json:"type"`
 | 
						||
	Key        string   `json:"key"`
 | 
						||
	ExpiredAt  int64    `json:"expiredAt"`
 | 
						||
	StaleAt    int64    `json:"staleAt"`
 | 
						||
	HeaderSize int64    `json:"headerSize"`
 | 
						||
	BodySize   int64    `json:"bodySize"`
 | 
						||
	MetaSize   int64    `json:"metaSize"`
 | 
						||
	Host       string   `json:"host"`     // 主机名
 | 
						||
	ServerId   int64    `json:"serverId"` // 服务ID
 | 
						||
 | 
						||
	Week1Hits int64 `json:"week1Hits"`
 | 
						||
	Week2Hits int64 `json:"week2Hits"`
 | 
						||
	Week      int32 `json:"week"`
 | 
						||
}
 | 
						||
 | 
						||
func (this *Item) IsExpired() bool {
 | 
						||
	return this.ExpiredAt < utils.UnixTime()
 | 
						||
}
 | 
						||
 | 
						||
func (this *Item) TotalSize() int64 {
 | 
						||
	return this.Size() + this.MetaSize + int64(len(this.Key)) + int64(len(this.Host))
 | 
						||
}
 | 
						||
 | 
						||
func (this *Item) Size() int64 {
 | 
						||
	return this.HeaderSize + this.BodySize
 | 
						||
}
 | 
						||
 | 
						||
func (this *Item) IncreaseHit(week int32) {
 | 
						||
	if this.Week == week {
 | 
						||
		this.Week2Hits++
 | 
						||
	} else {
 | 
						||
		if week-this.Week == 1 {
 | 
						||
			this.Week1Hits = this.Week2Hits
 | 
						||
		} else {
 | 
						||
			this.Week1Hits = 0
 | 
						||
		}
 | 
						||
		this.Week2Hits = 1
 | 
						||
		this.Week = week
 | 
						||
	}
 | 
						||
}
 |