diff options
-rw-r--r-- | cache.go | 22 | ||||
-rw-r--r-- | http_handle_repo_tree.go | 19 |
2 files changed, 33 insertions, 8 deletions
@@ -23,8 +23,8 @@ func init() { var err error treeReadmeCache, err = ristretto.NewCache(&ristretto.Config[[]byte, treeReadmeCacheEntry]{ NumCounters: 1e4, - MaxCost: 1 << 30, - BufferItems: 64, + MaxCost: 1 << 60, + BufferItems: 8192, }) if err != nil { clog.Fatal(1, "Error initializing indexPageCache: "+err.Error()) @@ -37,10 +37,24 @@ func init() { var err error indexCommitsDisplayCache, err = ristretto.NewCache(&ristretto.Config[[]byte, []commitDisplay]{ NumCounters: 1e4, - MaxCost: 1 << 30, - BufferItems: 64, + MaxCost: 1 << 60, + BufferItems: 8192, }) if err != nil { clog.Fatal(1, "Error initializing indexCommitsCache: "+err.Error()) } } + +var commitPathFileHTMLCache *ristretto.Cache[[]byte, template.HTML] + +func init() { + var err error + commitPathFileHTMLCache, err = ristretto.NewCache(&ristretto.Config[[]byte, template.HTML]{ + NumCounters: 1e4, + MaxCost: 1 << 60, + BufferItems: 8192, + }) + if err != nil { + clog.Fatal(1, "Error initializing commitPathFileHTMLCache: "+err.Error()) + } +} diff --git a/http_handle_repo_tree.go b/http_handle_repo_tree.go index 41ae93e..38b533d 100644 --- a/http_handle_repo_tree.go +++ b/http_handle_repo_tree.go @@ -42,7 +42,7 @@ func httpHandleRepoTree(writer http.ResponseWriter, request *http.Request, param cacheHandle := append(refHashSlice, []byte(pathSpec)...) - fmt.Printf("%#v", string(cacheHandle)) + fmt.Printf("%#v\n", string(cacheHandle)) if value, found := treeReadmeCache.Get(cacheHandle); found { params["files"] = value.DisplayTree @@ -52,6 +52,15 @@ func httpHandleRepoTree(writer http.ResponseWriter, request *http.Request, param return } + if value, found := commitPathFileHTMLCache.Get(cacheHandle); found { + params["file_contents"] = value + renderTemplate(writer, "repo_tree_file", params) + return + } + start := time.Now() + + fmt.Println("miss") + var target *object.Tree if pathSpec == "" { if commitObject, err = repo.CommitObject(refHash); err != nil { @@ -63,7 +72,6 @@ func httpHandleRepoTree(writer http.ResponseWriter, request *http.Request, param return } - start := time.Now() displayTree := makeDisplayTree(tree) readmeFilename, readmeRendered := renderReadmeAtTree(tree) cost := time.Since(start).Nanoseconds() @@ -127,6 +135,10 @@ func httpHandleRepoTree(writer http.ResponseWriter, request *http.Request, param return } formattedHTML = template.HTML(formattedHTMLStr.Bytes()) //#nosec G203 + cost := time.Since(start).Nanoseconds() + + commitPathFileHTMLCache.Set(cacheHandle, formattedHTML, cost) + params["file_contents"] = formattedHTML renderTemplate(writer, "repo_tree_file", params) @@ -138,7 +150,6 @@ func httpHandleRepoTree(writer http.ResponseWriter, request *http.Request, param return } - start := time.Now() displayTree := makeDisplayTree(target) readmeFilename, readmeRendered := renderReadmeAtTree(target) cost := time.Since(start).Nanoseconds() @@ -148,7 +159,7 @@ func httpHandleRepoTree(writer http.ResponseWriter, request *http.Request, param ReadmeFilename: readmeFilename, ReadmeRendered: readmeRendered, } - treeReadmeCache.Set(cacheHandle, entry, cost) + fmt.Println(treeReadmeCache.Set(cacheHandle, entry, cost)) params["readme_filename"], params["readme"] = readmeFilename, readmeRendered params["files"] = displayTree |