From c39e57a85760c15a7fa58bf661120cc3373f3d13 Mon Sep 17 00:00:00 2001 From: miyuko Date: Fri, 17 Oct 2025 17:12:24 +0100 Subject: [PATCH] Fetch manifests in parallel when handling GET requests. --- src/pages.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pages.go b/src/pages.go index 4ca9672..f769179 100644 --- a/src/pages.go +++ b/src/pages.go @@ -87,6 +87,13 @@ func getPage(w http.ResponseWriter, r *http.Request) error { return err } + indexManifestCh := make(chan *Manifest, 1) + go func() { + manifest, _ := backend.GetManifest(r.Context(), makeWebRoot(host, ".index"), + GetManifestOptions{BypassCache: bypassCache}) + indexManifestCh <- manifest + }() + sitePath = strings.TrimPrefix(r.URL.Path, "/") if projectName, projectPath, found := strings.Cut(sitePath, "/"); found { projectManifest, err := backend.GetManifest(r.Context(), makeWebRoot(host, projectName), @@ -96,8 +103,7 @@ func getPage(w http.ResponseWriter, r *http.Request) error { } } if manifest == nil { - manifest, err = backend.GetManifest(r.Context(), makeWebRoot(host, ".index"), - GetManifestOptions{BypassCache: bypassCache}) + manifest = <-indexManifestCh if manifest == nil { if found, fallbackErr := HandleWildcardFallback(w, r); found { return fallbackErr