为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Go http 包发送 204 No Content?

如何使用 Go http 包发送 204 No Content?

Go
慕雪6442864 2021-06-09 18:42:49
我使用Go on Google App Engine构建了一个小型示例应用程序,它在调用不同的 URL 时发送字符串响应。但是如何使用 Go 的http 包向客户端发送 204 No Content 响应?package helloimport (    "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}
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

根据包文档:


func NoContent(w http.ResponseWriter, r *http.Request) {

  // Set up any headers you want here.

  w.WriteHeader(http.StatusNoContent) // send the headers with a 204 response code.

}

将向客户端发送 204 状态。


查看完整回答
反对 回复 2021-06-21
?
慕斯王

TA贡献1864条经验 获得超2个赞

从您的脚本发送 204 响应意味着您的实例仍然需要运行并花费您金钱。如果您正在寻找缓存解决方案。谷歌得到了它,它被称为边缘缓存。


您只需要使用以下标头进行响应,Google 会自动将您的响应缓存在距离用户最近的多个服务器中(即使用 204 进行回复)。这大大提高了您网站的速度并降低了实例成本。


w.Header().Set("Cache-Control", "public, max-age=86400")

w.Header().Set("Pragma", "Public")

您可以调整 max-age,但要明智地进行。


顺便说一句,似乎必须启用计费才能使用边缘缓存


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 271 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信