我想知道,如果Google App Engine的服务URL Fetch使用代理缓存,会讨论in other thread?我的问题是:如果我使用GAE上的应用程序使用URL Fetch向我的应用程序发送请求(到某个处理程序),结果是否会缓存在此代理中?
感谢。
答案 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来检索你可以轻松实例化并直接使用你的业务逻辑类的东西?
为了防止应用程序导致无休止的请求递归,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。