3

我想知道,如果 Google App Engine 的服务URL Fetch使用代理缓存,这是在其他线程中讨论的?我的问题是:如果我在 GAE 上使用 URL Fetch 从我的应用程序向我的应用程序(到某个处理程序)发送请求,结果会缓存在这个代理中吗?

谢谢。

4

3 回答 3

3

在 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)
于 2012-08-16T07:59:04.257 回答
1

只要您设置了Cache-Control标头并且您没有请求相同的 url(即,来自 foo 的 url foo),这将起作用。

但是,我建议使用 memcache 来缓存所需网页的响应。这将比调用 urlfetch 快得多,并且会给您更好的控制和保证。

于 2012-08-16T08:09:13.100 回答
0

我只是在这里推测您的应用程序的设计,但是为什么您需要使用 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)

看看这个问题

于 2012-08-16T08:30:13.763 回答