diff --git a/docker-compose.yml b/docker-compose.yml index 4680c9e..933ef8a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,7 +14,7 @@ services: - DATABASE_PASSWORD=${DATABASE_PASSWORD} - REDIS_PASSWORD=${REDIS_PASSWORD:-eafon123!} - MEILISEARCH_API_KEY=${MEILISEARCH_API_KEY:-young9#!UJsD219921031} - - ENABLE_PERSIST_TASK=true + - ENABLE_PERSIST_TASK=false - AWS_REGION=eu-central-1 - S3_BUCKET=luxsin-app-bucket - SHARE_CODE_MAX_PER_MAC=${SHARE_CODE_MAX_PER_MAC:-1} diff --git a/internal/middleware/cache_control.go b/internal/middleware/cache_control.go new file mode 100644 index 0000000..c5e0bcb --- /dev/null +++ b/internal/middleware/cache_control.go @@ -0,0 +1,18 @@ +package middleware + +import "github.com/gin-gonic/gin" + +const ( + CacheControlList = "public, max-age=300, s-maxage=1800, stale-while-revalidate=60" + CacheControlCurve = "public, max-age=300, s-maxage=3600, stale-while-revalidate=120" + CacheControlModelList = "public, max-age=30, s-maxage=300, stale-while-revalidate=30" +) + +func CacheControl(value string) gin.HandlerFunc { + return func(c *gin.Context) { + c.Header("Cache-Control", value) + c.Header("Vary", "Accept-Encoding") + c.Next() + } +} + diff --git a/internal/router/router.go b/internal/router/router.go index 73aebf6..a8e06c1 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -62,13 +62,13 @@ func New(log *zap.Logger, db *sql.DB, searchClient *search.Client, rdb *redis.Cl audio := r.Group("/audio") { - audio.GET("/getBrand", brand.GetBrand) - audio.GET("/getModel", model.GetModel) - audio.GET("/modelList", modelList.ModelList) + audio.GET("/getBrand", middleware.CacheControl(middleware.CacheControlList), brand.GetBrand) + audio.GET("/getModel", middleware.CacheControl(middleware.CacheControlList), model.GetModel) + audio.GET("/modelList", middleware.CacheControl(middleware.CacheControlModelList), modelList.ModelList) audio.GET("/reportDevInfo", device.ReportDevInfo) audio.GET("/ota", ota.GetOTA) - audio.GET("/getCurve", curve.GetCurve) - audio.GET("/modelCurve", curve.ModelCurve) + audio.GET("/getCurve", middleware.CacheControl(middleware.CacheControlCurve), curve.GetCurve) + audio.GET("/modelCurve", middleware.CacheControl(middleware.CacheControlCurve), curve.ModelCurve) audio.GET("/getModelCSV", modelCSV.GetModelCSV) audio.POST("/shareCreate", shareCode.ExportShareCode) audio.GET("/shareList", shareCode.ListShareCodesByMac)