diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-17 09:28:04 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-17 10:15:22 +0200 |
commit | 4a366fcfee24b3a5a5045b16c3b87b76147adf5e (patch) | |
tree | 7a8562579346a5dedb31137c896b6f5311ec061c /commands/server.go | |
parent | 083311d0336ced35909b3375950f7817ecf95ed0 (diff) |
Prevent stale content in Fast Render Mode
We do that by re-render visited pages that is not already in the stack. This may potentially do some double work, but that small penalty should be well worth it.
Fixes #5281
Diffstat (limited to 'commands/server.go')
-rw-r--r-- | commands/server.go | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/commands/server.go b/commands/server.go index ffdbc95c9..7b7164eea 100644 --- a/commands/server.go +++ b/commands/server.go @@ -345,10 +345,22 @@ func (f *fileServer) createEndpoint(i int) (*http.ServeMux, string, string, erro w.Header().Set("Pragma", "no-cache") } - if f.c.fastRenderMode { + if f.c.fastRenderMode && f.c.buildErr == nil { p := r.RequestURI if strings.HasSuffix(p, "/") || strings.HasSuffix(p, "html") || strings.HasSuffix(p, "htm") { + if !f.c.visitedURLs.Contains(p) { + // If not already on stack, re-render that single page. + if err := f.c.partialReRender(p); err != nil { + f.c.handleBuildErr(err, fmt.Sprintf("Failed to render %q", p)) + if f.c.showErrorInBrowser { + http.Redirect(w, r, p, 301) + return + } + } + } + f.c.visitedURLs.Add(p) + } } h.ServeHTTP(w, r) |