Google App Engine のサービスURL Fetchがプロキシ キャッシュを使用しているかどうかはわかりませんが、これについては別のスレッドで説明されています。私の質問は: URL Fetch を使用して、GAE 上のアプリからアプリ (ハンドラー) にリクエストを送信した場合、結果はこのプロキシにキャッシュされますか?
ありがとう。
URLFetchに適切な ヘッダーを設定します。Cache-control
Python
result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=0, must-revalidate'})
行く
client := urlfetch.Client(c)
req, err := http.NewRequest("GET", check.Url, nil)
req.Header.Add("Cache-Control", `max-age=0, must-revalidate`)
resp, err := client.Do(req)
Cache-Control
これは、ヘッダーを設定し、同じURL(つまり、fooからのurl foo)を要求していない限り機能します。
ただし、代わりにmemcacheを使用して目的のWebページの応答をキャッシュすることをお勧めします。これは、urlfetchを呼び出すよりもはるかに高速であり、より優れた制御と保証を提供します。
ここではアプリケーションの設計について推測しているだけですが、UrlFetch APIを使用して、ビジネスロジッククラスを直接インスタンス化して使用するのが簡単なものを取得する必要があるのはなぜですか?
また、Urlfetchのドキュメントからこれに注意してください。
アプリがリクエストの無限の再帰を引き起こすのを防ぐために、リクエストハンドラーは独自のURLをフェッチすることを許可されていません。
本当にこれを行う必要がある場合はCache-Control
、リクエストに適切なヘッダーを設定してください。
headers = {'Cache-Control':'no-cache,max-age=0', 'Pragma':'no-cache'}
result = urlfetch.fetch("http://foo/route", None, urlfetch.GET, headers)
この問題をご覧ください。