mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
livereloadinject: Save some allocations
As suggested by @DominoPivot ``` name old time/op new time/op delta LiveReloadInject-10 1.11µs ± 2% 1.04µs ± 2% -6.45% (p=0.029 n=4+4) name old alloc/op new alloc/op delta LiveReloadInject-10 1.23kB ± 0% 0.89kB ± 0% -27.69% (p=0.029 n=4+4) name old allocs/op new allocs/op delta LiveReloadInject-10 12.0 ± 0% 10.0 ± 0% -16.67% (p=0.029 n=4+4) ```
This commit is contained in:
parent
9dc608084b
commit
8f60c0c1ec
1 changed files with 12 additions and 10 deletions
|
@ -25,12 +25,14 @@ import (
|
||||||
"github.com/gohugoio/hugo/transform"
|
"github.com/gohugoio/hugo/transform"
|
||||||
)
|
)
|
||||||
|
|
||||||
var ignoredSyntax = regexp.MustCompile(`(?s)^(?:\s+|<!--.*?-->|<\?.*?\?>)*`)
|
var (
|
||||||
var tagsBeforeHead = []*regexp.Regexp{
|
ignoredSyntax = regexp.MustCompile(`(?s)^(?:\s+|<!--.*?-->|<\?.*?\?>)*`)
|
||||||
|
tagsBeforeHead = []*regexp.Regexp{
|
||||||
regexp.MustCompile(`(?is)^<!doctype\s[^>]*>`),
|
regexp.MustCompile(`(?is)^<!doctype\s[^>]*>`),
|
||||||
regexp.MustCompile(`(?is)^<html(?:\s[^>]*)?>`),
|
regexp.MustCompile(`(?is)^<html(?:\s[^>]*)?>`),
|
||||||
regexp.MustCompile(`(?is)^<head(?:\s[^>]*)?>`),
|
regexp.MustCompile(`(?is)^<head(?:\s[^>]*)?>`),
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// New creates a function that can be used to inject a script tag for
|
// New creates a function that can be used to inject a script tag for
|
||||||
// the livereload JavaScript at the start of an HTML document's head.
|
// the livereload JavaScript at the start of an HTML document's head.
|
||||||
|
@ -54,12 +56,12 @@ func New(baseURL url.URL) transform.Transformer {
|
||||||
src += "&port=" + baseURL.Port()
|
src += "&port=" + baseURL.Port()
|
||||||
src += "&path=" + strings.TrimPrefix(path+"/livereload", "/")
|
src += "&path=" + strings.TrimPrefix(path+"/livereload", "/")
|
||||||
|
|
||||||
c := make([]byte, len(b))
|
|
||||||
copy(c, b)
|
|
||||||
|
|
||||||
script := []byte(fmt.Sprintf(`<script src="%s" data-no-instant defer></script>`, html.EscapeString(src)))
|
script := []byte(fmt.Sprintf(`<script src="%s" data-no-instant defer></script>`, html.EscapeString(src)))
|
||||||
|
|
||||||
c = append(c[:idx], append(script, c[idx:]...)...)
|
c := make([]byte, len(b)+len(script))
|
||||||
|
copy(c, b[:idx])
|
||||||
|
copy(c[idx:], script)
|
||||||
|
copy(c[idx+len(script):], b[idx:])
|
||||||
|
|
||||||
if _, err := ft.To().Write(c); err != nil {
|
if _, err := ft.To().Write(c); err != nil {
|
||||||
loggers.Log().Warnf("Failed to inject LiveReload script:", err)
|
loggers.Log().Warnf("Failed to inject LiveReload script:", err)
|
||||||
|
|
Loading…
Reference in a new issue