diff options
author | Runxi Yu <me@runxiyu.org> | 2025-03-22 22:04:25 +0800 |
---|---|---|
committer | Runxi Yu <me@runxiyu.org> | 2025-03-22 22:04:25 +0800 |
commit | cf735091ac163cbaafda8a12ead568bf4ed8abbf (patch) | |
tree | fda3c9f96040991730d090a3a05809decc2588b1 /http_handle_repo_index.go | |
parent | Cache tree-building (diff) | |
download | forge-cf735091ac163cbaafda8a12ead568bf4ed8abbf.tar.gz forge-cf735091ac163cbaafda8a12ead568bf4ed8abbf.tar.zst forge-cf735091ac163cbaafda8a12ead568bf4ed8abbf.zip |
Reuse the cache for /tree
Diffstat (limited to 'http_handle_repo_index.go')
-rw-r--r-- | http_handle_repo_index.go | 29 |
1 files changed, 3 insertions, 26 deletions
diff --git a/http_handle_repo_index.go b/http_handle_repo_index.go index 44151a0..9285e6e 100644 --- a/http_handle_repo_index.go +++ b/http_handle_repo_index.go @@ -4,40 +4,17 @@ package main import ( - "html/template" "iter" "net/http" "strings" "time" - "github.com/dgraph-io/ristretto/v2" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/plumbing/object" "github.com/go-git/go-git/v5/plumbing/storer" - "go.lindenii.runxiyu.org/lindenii-common/clog" ) -type indexPageCacheEntry struct { - DisplayTree []displayTreeEntry - ReadmeFilename string - ReadmeRendered template.HTML -} - -var indexPageCache *ristretto.Cache[[]byte, indexPageCacheEntry] - -func init() { - var err error - indexPageCache, err = ristretto.NewCache(&ristretto.Config[[]byte, indexPageCacheEntry]{ - NumCounters: 1e4, - MaxCost: 1 << 30, - BufferItems: 64, - }) - if err != nil { - clog.Fatal(1, "Error initializing indexPageCache: "+err.Error()) - } -} - func httpHandleRepoIndex(writer http.ResponseWriter, _ *http.Request, params map[string]any) { var repo *git.Repository var repoName string @@ -83,7 +60,7 @@ func httpHandleRepoIndex(writer http.ResponseWriter, _ *http.Request, params map commitIterSeq, params["commits_err"] = commitIterSeqErr(commitIter) params["commits"] = iterSeqLimit(commitIterSeq, 3) - if value, found := indexPageCache.Get(refHashSlice); found { + if value, found := treeReadmeCache.Get(refHashSlice); found { params["files"] = value.DisplayTree params["readme_filename"] = value.ReadmeFilename params["readme"] = value.ReadmeRendered @@ -104,12 +81,12 @@ func httpHandleRepoIndex(writer http.ResponseWriter, _ *http.Request, params map params["readme_filename"] = readmeFilename params["readme"] = readmeRendered - entry := indexPageCacheEntry{ + entry := treeReadmeCacheEntry{ DisplayTree: displayTree, ReadmeFilename: readmeFilename, ReadmeRendered: readmeRendered, } - indexPageCache.Set(refHashSlice, entry, cost) + treeReadmeCache.Set(refHashSlice, entry, cost) } no_ref: |