generate last-modified string at settings init

This commit is contained in:
0xJacky 2022-03-07 18:56:16 +08:00
parent 77dfd64445
commit c4f7bb7604
4 changed files with 14 additions and 9 deletions

View file

@ -7,7 +7,7 @@ tmp_dir = "tmp"
[build] [build]
# Just plain old shell command. You could use `make` as well. # Just plain old shell command. You could use `make` as well.
cmd = "go build -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/server/settings.BuildTime=$(date +%Y.%m.%d.%H%M%S)'\" -o ./tmp/main ." cmd = "go build -ldflags=\"-X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'\" -o ./tmp/main ."
# Binary file yields from `cmd`. # Binary file yields from `cmd`.
bin = "tmp/main" bin = "tmp/main"
# Customize binary. # Customize binary.

View file

@ -151,7 +151,7 @@ jobs:
- name: Build - name: Build
run: | run: |
mkdir -p dist mkdir -p dist
go build -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/server/settings.BuildTime=$(date +%Y.%m.%d.%H%M%S)'" -o dist/nginx-ui -v main.go go build -ldflags "$LD_FLAGS -X 'github.com/0xJacky/Nginx-UI/server/settings.buildTime=$(date +%s)'" -o dist/nginx-ui -v main.go
- name: Archive backend artifacts - name: Archive backend artifacts
uses: actions/upload-artifact@v2 uses: actions/upload-artifact@v2

View file

@ -12,7 +12,6 @@ import (
"net/http" "net/http"
"path" "path"
"strings" "strings"
"time"
) )
func recovery() gin.HandlerFunc { func recovery() gin.HandlerFunc {
@ -84,13 +83,10 @@ func cacheJs() gin.HandlerFunc {
return func(c *gin.Context) { return func(c *gin.Context) {
if strings.Contains(c.Request.URL.String(), "js") { if strings.Contains(c.Request.URL.String(), "js") {
c.Header("Cache-Control", "max-age: 1296000") c.Header("Cache-Control", "max-age: 1296000")
t, _ := time.Parse("2006.01.02.150405", settings.BuildTime) if c.Request.Header.Get("If-Modified-Since") == settings.LastModified {
t = t.Add(-8 * time.Hour)
lastModified := strings.ReplaceAll(t.Format(time.RFC1123), "UTC", "GMT")
if c.Request.Header.Get("If-Modified-Since") == lastModified {
c.AbortWithStatus(http.StatusNotModified) c.AbortWithStatus(http.StatusNotModified)
} }
c.Header("Last-Modified", lastModified) c.Header("Last-Modified", settings.LastModified)
} }
} }
} }

View file

@ -1,14 +1,18 @@
package settings package settings
import ( import (
"github.com/spf13/cast"
"gopkg.in/ini.v1" "gopkg.in/ini.v1"
"log" "log"
"strings"
"time"
) )
var Conf *ini.File var Conf *ini.File
var ( var (
BuildTime string buildTime string
LastModified string
) )
type Server struct { type Server struct {
@ -36,6 +40,11 @@ var sections = map[string]interface{}{
"server": ServerSettings, "server": ServerSettings,
} }
func init() {
t := time.Unix(cast.ToInt64(buildTime), 0)
LastModified = strings.ReplaceAll(t.Format(time.RFC1123), "UTC", "GMT")
}
func Init(confPath string) { func Init(confPath string) {
ConfPath = confPath ConfPath = confPath
Setup() Setup()