URL Fetch是否使用GAE的代理缓存?

时间:2012-08-16 06:20:31

标签: google-app-engine caching proxy urlfetch

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

感谢。

3 个答案:

答案 0 :(得分:3)

设置appropriate Cache-control header on URLFetch

<强>的Python

result = urlfetch.fetch(url, headers = {'Cache-Control' : 'max-age=0, must-revalidate'})

<强> GO

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)

答案 1 :(得分:1)

只要您设置Cache-Control标题并且您没有请求相同的网址(即foo的url foo),这将有效。

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

答案 2 :(得分:0)

我只是在猜测你的应用程序的设计,但为什么你需要使用UrlFetch API来检索你可以轻松实例化并直接使用你的业务逻辑类的东西?

另请注意Urlfetch documentation

  

为了防止应用程序导致无休止的请求递归,a   请求处理程序不允许获取自己的URL。

如果您真的被迫这样做,请在您的请求中设置正确的Cache-Control标题:

headers = {'Cache-Control':'no-cache,max-age=0', 'Pragma':'no-cache'}
result = urlfetch.fetch("http://foo/route", None, urlfetch.GET, headers)

查看此Issue