aboutsummaryrefslogtreecommitdiff
path: root/http_handle_repo_index.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-03-22 22:04:25 +0800
committerRunxi Yu <me@runxiyu.org>2025-03-22 22:04:25 +0800
commitcf735091ac163cbaafda8a12ead568bf4ed8abbf (patch)
treefda3c9f96040991730d090a3a05809decc2588b1 /http_handle_repo_index.go
parentCache tree-building (diff)
downloadforge-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.go29
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: