更新依赖
This commit is contained in:
2
go.mod
2
go.mod
@@ -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
2
go.sum
@@ -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=
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -26,7 +26,7 @@ type ServerMeta struct {
|
||||
Domain string
|
||||
|
||||
client *http.Client
|
||||
cache *tools.Cache[PageMetaContent]
|
||||
cache *tools.KVCache[PageMetaContent]
|
||||
locker *utils.Locker
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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))
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user