Pārlūkot izejas kodu

Fast path for setting headers.

- No heap allocation
- No indirection
- CanonicalMIMEHeaderKey() is not called
Manu Mtz-Almeida 10 gadi atpakaļ
vecāks
revīzija
a2105ce34c
4 mainītis faili ar 9 papildinājumiem un 9 dzēšanām
  1. 2 2
      render/html.go
  2. 3 3
      render/json.go
  3. 2 2
      render/text.go
  4. 2 2
      render/xml.go

+ 2 - 2
render/html.go

@@ -30,7 +30,7 @@ type (
 	}
 )
 
-const htmlContentType = "text/html; charset=utf-8"
+var htmlContentType = []string{"text/html; charset=utf-8"}
 
 func (r HTMLProduction) Instance(name string, data interface{}) Render {
 	return HTML{
@@ -58,6 +58,6 @@ func (r HTMLDebug) loadTemplate() *template.Template {
 }
 
 func (r HTML) Write(w http.ResponseWriter) error {
-	w.Header().Set("Content-Type", htmlContentType)
+	w.Header()["Content-Type"] = htmlContentType
 	return r.Template.ExecuteTemplate(w, r.Name, r.Data)
 }

+ 3 - 3
render/json.go

@@ -19,15 +19,15 @@ type (
 	}
 )
 
-const jsonContentType = "application/json; charset=utf-8"
+var jsonContentType = []string{"application/json; charset=utf-8"}
 
 func (r JSON) Write(w http.ResponseWriter) error {
-	w.Header().Set("Content-Type", jsonContentType)
+	w.Header()["Content-Type"] = jsonContentType
 	return json.NewEncoder(w).Encode(r.Data)
 }
 
 func (r IndentedJSON) Write(w http.ResponseWriter) error {
-	w.Header().Set("Content-Type", jsonContentType)
+	w.Header()["Content-Type"] = jsonContentType
 	jsonBytes, err := json.MarshalIndent(r.Data, "", "    ")
 	if err != nil {
 		return err

+ 2 - 2
render/text.go

@@ -14,12 +14,12 @@ type String struct {
 	Data   []interface{}
 }
 
-const plainContentType = "text/plain; charset=utf-8"
+var plainContentType = []string{"text/plain; charset=utf-8"}
 
 func (r String) Write(w http.ResponseWriter) error {
 	header := w.Header()
 	if _, exist := header["Content-Type"]; !exist {
-		header.Set("Content-Type", plainContentType)
+		header["Content-Type"] = plainContentType
 	}
 	if len(r.Data) > 0 {
 		fmt.Fprintf(w, r.Format, r.Data...)

+ 2 - 2
render/xml.go

@@ -13,9 +13,9 @@ type XML struct {
 	Data interface{}
 }
 
-const xmlContentType = "application/xml; charset=utf-8"
+var xmlContentType = []string{"application/xml; charset=utf-8"}
 
 func (r XML) Write(w http.ResponseWriter) error {
-	w.Header().Set("Content-Type", xmlContentType)
+	w.Header()["Content-Type"] = xmlContentType
 	return xml.NewEncoder(w).Encode(r.Data)
 }