我在tiny sample app上构建了Go Google App Engine,在调用不同的网址时发送字符串响应。但是,如何使用Go的http package向客户发送204 No Content响应?
package hello
import (
"fmt"
"net/http"
"appengine"
"appengine/memcache"
)
func init() {
http.HandleFunc("/", hello)
http.HandleFunc("/hits", showHits)
}
func hello(w http.ResponseWriter, r *http.Request) {
name := r.Header.Get("name")
fmt.Fprintf(w, "Hello %s!", name)
}
func showHits(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "%d", hits(r))
}
func hits(r *http.Request) uint64 {
c := appengine.NewContext(r)
newValue, _ := memcache.Increment(c, "hits", 1, 0)
return newValue
}
答案 0 :(得分:13)
根据包文档:
func NoContent(w http.ResponseWriter, r *http.Request) {
// Set up any headers you want here.
w.WriteHeader(204) // send the headers with a 204 response code.
}
将向客户发送204状态。
答案 1 :(得分:2)
从您的脚本发送204响应意味着您的实例仍然需要运行并花费您的钱。如果您正在寻找缓存解决方案。 Google得到了它,它叫做Edge Cache。
您只需回复以下标题,Google就会自动将您的回复缓存在离用户最近的多个服务器中(即回复204)。这大大提高了网站的速度并降低了实例成本。
w.Header().Set("Cache-Control", "public, max-age=86400")
w.Header().Set("Pragma", "Public")
你可以调整最大年龄,但要明智地做。
顺便说一句,似乎必须启用结算才能使用Edge Cache