Использует ли URL Fetch прокси-кэш GAE?

Интересно, если служба Google App Engine URL Fetch использует прокси-кеш, который обсуждается в другом потоке? Мой вопрос: если я отправлю запрос с использованием URL Fetch из моего приложения в GAE в свое приложение (в какой-либо обработчик), будет ли результат кэшироваться в этом прокси?

Спасибо.


person Stanislav Heller    schedule 16.08.2012    source источник


Ответы (3)


Это будет работать до тех пор, пока вы устанавливаете заголовок Cache-Control и не запрашиваете один и тот же URL-адрес (например, URL-адрес foo из foo).

Однако я бы рекомендовал вместо этого кешировать ответ нужных веб-страниц, используя memcache. Это будет намного быстрее, чем вызов urfetch, и даст вам лучший контроль и гарантии.

person Sebastian Kreft    schedule 16.08.2012

Установите соответствующий Cache-control заголовок URLFetch:

Питон

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)
person Peter Knego    schedule 16.08.2012

Я просто размышляю о дизайне вашего приложения, но зачем вам использовать API-интерфейс UrlFetch для извлечения чего-то, что вы могли бы легко создать и напрямую использовать в своих классах бизнес-логики?

Также обратите внимание на это из документации 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)

Взгляните на эту проблему.

person systempuntoout    schedule 16.08.2012