14

さまざまな URL が呼び出されたときに文字列応答を送信する、 Google App EngineでGoを使用して小さなサンプル アプリを作成しました。しかし、Go のhttp パッケージを使用して 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
}
4

2 に答える 2

2

スクリプトから 204 応答を送信すると、インスタンスを実行する必要があり、費用がかかることを意味します。キャッシングソリューションを探している場合。Google がそれを取得し、Edge Cache と呼んでいます。

次のヘッダーで応答するだけで、Google はユーザーに最も近い複数のサーバーに応答を自動的にキャッシュします (つまり、204 で応答します)。これにより、サイトの速度が大幅に向上し、インスタンスのコストが削減されます。

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

max-age は調整できますが、慎重に行ってください。

ちなみに、Edge Cacheを使うには課金を有効にする必要があるようです

于 2013-07-22T09:33:44.333 に答える