更新依赖

This commit is contained in:
dragon
2025-11-14 17:28:51 +08:00
parent 4ee8f4ed69
commit d67dbf88ae
7 changed files with 62 additions and 10 deletions

2
go.mod
View File

@@ -11,7 +11,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.11.1
go.uber.org/zap v1.27.0
gopkg.d7z.net/middleware v0.0.0-20251113064153-9f946bf959f5
gopkg.d7z.net/middleware v0.0.0-20251114092249-67753b883a45
gopkg.in/yaml.v3 v3.0.1
)

2
go.sum
View File

@@ -193,6 +193,8 @@ gopkg.d7z.net/middleware v0.0.0-20251113014952-1d1e87d199a4 h1:0O6cCLuM+IHaDqpBU
gopkg.d7z.net/middleware v0.0.0-20251113014952-1d1e87d199a4/go.mod h1:BJ8ySXqmlBpM9B2zFJfmvYQ61XPA+G0O1VDmYomxyrM=
gopkg.d7z.net/middleware v0.0.0-20251113064153-9f946bf959f5 h1:RwEXivoUP8qEbKxRWhJfaSTWHg+AEpV0p0K2DSG+LGw=
gopkg.d7z.net/middleware v0.0.0-20251113064153-9f946bf959f5/go.mod h1:BJ8ySXqmlBpM9B2zFJfmvYQ61XPA+G0O1VDmYomxyrM=
gopkg.d7z.net/middleware v0.0.0-20251114092249-67753b883a45 h1:ujyhl4Di/z6fGOcIAqydzRQNwI13F9JD3xj8+s+rTVM=
gopkg.d7z.net/middleware v0.0.0-20251114092249-67753b883a45/go.mod h1:BJ8ySXqmlBpM9B2zFJfmvYQ61XPA+G0O1VDmYomxyrM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

View File

@@ -8,7 +8,6 @@ import (
"github.com/pkg/errors"
"go.uber.org/zap"
"gopkg.d7z.net/middleware/kv"
"gopkg.d7z.net/middleware/tools"
)
type PageDomain struct {
@@ -89,8 +88,8 @@ func (p *PageDomain) returnMeta(ctx context.Context, owner, repo, branch string,
result.Owner = owner
result.Repo = repo
result.PageVFS = NewPageVFS(p.client, p.Backend, owner, repo, result.CommitID)
result.OrgDB = tools.NewPrefixKV(p.pageDB, p.pageDB.WithKey("org", owner))
result.RepoDB = tools.NewPrefixKV(p.pageDB, p.pageDB.WithKey("repo", owner, repo))
result.OrgDB = p.pageDB.Child("org").Child(owner)
result.RepoDB = p.pageDB.Child("repo").Child(owner).Child(repo)
result.Path = strings.Join(path, "/")
if err = p.alias.Bind(ctx, meta.Alias, result.Owner, result.Repo, branch); err != nil {

View File

@@ -26,7 +26,7 @@ type ServerMeta struct {
Domain string
client *http.Client
cache *tools.Cache[PageMetaContent]
cache *tools.KVCache[PageMetaContent]
locker *utils.Locker
}

View File

@@ -16,7 +16,6 @@ import (
"gopkg.d7z.net/gitea-pages/pkg/core"
"gopkg.d7z.net/gitea-pages/pkg/filters"
"gopkg.d7z.net/middleware/kv"
"gopkg.d7z.net/middleware/tools"
)
var portExp = regexp.MustCompile(`:\d+$`)
@@ -42,9 +41,10 @@ func NewPageServer(
errorHandler func(w http.ResponseWriter, r *http.Request, err error),
) *Server {
svcMeta := core.NewServerMeta(client, backend, domain, cache, cacheTTL)
cfgDB := db.Child("config")
pageMeta := core.NewPageDomain(svcMeta,
core.NewDomainAlias(tools.NewPrefixKV(db, "config/alias")),
tools.NewPrefixKV(db, "config/pages"),
core.NewDomainAlias(cfgDB.Child("alias")),
cfgDB.Child("pages"),
domain, defaultBranch)
c, err := lru.New[string, glob.Glob](256)
if err != nil {

View File

@@ -12,7 +12,6 @@ import (
"go.uber.org/zap"
"gopkg.d7z.net/gitea-pages/pkg"
"gopkg.d7z.net/middleware/kv"
"gopkg.d7z.net/middleware/tools"
)
type TestServer struct {
@@ -43,7 +42,7 @@ func NewTestServer(domain string) *TestServer {
domain,
"gh-pages",
memoryKV,
tools.NewPrefixKV(memoryKV, "cache"),
memoryKV.Child("cache"),
0,
func(w http.ResponseWriter, r *http.Request, err error) {
if errors.Is(err, os.ErrNotExist) {

View File

@@ -56,3 +56,55 @@ routes:
assert.NoError(t, err)
assert.Equal(t, "POST /api/v1/fetch", string(data))
}
func Benchmark_JS_Request(b *testing.B) {
// 初始化服务器(在基准测试外执行,避免计入时间)
server := core.NewDefaultTestServer()
defer server.Close()
server.AddFile("org1/repo1/gh-pages/index.html", "hello world")
server.AddFile("org1/repo1/gh-pages/index.js", `response.write(request.method+' /'+request.path)`)
server.AddFile("org1/repo1/gh-pages/.pages.yaml", `
routes:
- path: "api/v1/**"
qjs:
exec: "index.js"
`)
b.ResetTimer() // 重置计时器,只测量下面的操作
b.Run("OpenFile_root", func(b *testing.B) {
for i := 0; i < b.N; i++ {
data, _, err := server.OpenFile("https://org1.example.com/repo1/")
if err != nil {
b.Fatal(err)
}
if string(data) != "hello world" {
b.Fatalf("expected 'hello world', got '%s'", string(data))
}
}
})
b.Run("OpenFile_api", func(b *testing.B) {
for i := 0; i < b.N; i++ {
data, _, err := server.OpenFile("https://org1.example.com/repo1/api/v1/fetch")
if err != nil {
b.Fatal(err)
}
if string(data) != "GET /api/v1/fetch" {
b.Fatalf("expected 'GET /api/v1/fetch', got '%s'", string(data))
}
}
})
b.Run("OpenRequest_post", func(b *testing.B) {
for i := 0; i < b.N; i++ {
data, _, err := server.OpenRequest(http.MethodPost, "https://org1.example.com/repo1/api/v1/fetch", nil)
if err != nil {
b.Fatal(err)
}
if string(data) != "POST /api/v1/fetch" {
b.Fatalf("expected 'POST /api/v1/fetch', got '%s'", string(data))
}
}
})
}