summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/fileserver/staticfiles.go
diff options
context:
space:
mode:
authorDominik Braun <dominikbraun1997@web.de>2019-08-08 07:59:02 +0200
committerMatt Holt <mholt@users.noreply.github.com>2019-08-07 23:59:02 -0600
commit4950ce485f7d931890fcfd2ee287b6df1b5db435 (patch)
tree81cafb7b6f235d001c99cc5185118a8490d98458 /modules/caddyhttp/fileserver/staticfiles.go
parentc8b0a97b1c2524f7486aef38b2cf78a93d7b98b0 (diff)
Part 1: Optimize using compiler's inliner (#2687)
* optimized functions for inlining * added note regarding ResponseWriterWrapper * optimzed browseWrite* methods for FileServer * created benchmarks for comparison * creating browseListing instance in each function * created benchmarks for openResponseWriter * removed benchmarks of old implementations * implemented sync.Pool for byte buffers * using global sync.Pool for writing JSON/HTML
Diffstat (limited to 'modules/caddyhttp/fileserver/staticfiles.go')
-rw-r--r--modules/caddyhttp/fileserver/staticfiles.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/modules/caddyhttp/fileserver/staticfiles.go b/modules/caddyhttp/fileserver/staticfiles.go
index 761dfc3..a66b753 100644
--- a/modules/caddyhttp/fileserver/staticfiles.go
+++ b/modules/caddyhttp/fileserver/staticfiles.go
@@ -15,6 +15,7 @@
package fileserver
import (
+ "bytes"
"fmt"
"html/template"
weakrand "math/rand"
@@ -25,6 +26,7 @@ import (
"path/filepath"
"strconv"
"strings"
+ "sync"
"time"
"github.com/caddyserver/caddy/v2"
@@ -46,6 +48,7 @@ type FileServer struct {
Hide []string `json:"hide,omitempty"`
IndexNames []string `json:"index_names,omitempty"`
Browse *Browse `json:"browse,omitempty"`
+
// TODO: Content negotiation
}
@@ -301,6 +304,12 @@ func calculateEtag(d os.FileInfo) string {
var defaultIndexNames = []string{"index.html"}
+var bufPool = sync.Pool{
+ New: func() interface{} {
+ return new(bytes.Buffer)
+ },
+}
+
const minBackoff, maxBackoff = 2, 5
// Interface guards