Does urllib2.urlopen() cache stuff?

They didn't mention this in python documentation. And recently I'm testing a website simply refreshing the site using urllib2.urlopen() to extract certain content, I notice sometimes when I update the site urllib2.urlopen() seems not get the newly added content. So I wonder it does cache stuff somewhere, right?

13
задан Shane 27 August 2010 в 16:34
поделиться

1 ответ

Интересно, он где-то кеширует что-то, верно?

Нет.

Если вы не видите новых данных, это может быть вызвано многими причинами. Большинство крупных веб-сервисов используют кэширование на стороне сервера из соображений производительности, например, используя кэширующие прокси-серверы, такие как Varnish и Squid, или кэширование на уровне приложений.

Если проблема вызвана кэшированием на стороне сервера, обычно невозможно заставить сервер предоставлять вам самые свежие данные.


Для кеширующих прокси-серверов, таких как squid, дела обстоят иначе. Обычно к ответу HTTP добавляется несколько дополнительных заголовков (response().info().headers).

Если вы видите поле заголовка с названием X-Cache или X-Cache-Lookup, это означает, что вы подключены к удаленному серверу не напрямую, а через прозрачный прокси.

Если у вас есть что-то вроде: X-Cache: HIT from proxy.domain.tld, это означает, что полученный вами ответ кэшируется. Противоположным является X-Cache MISS от proxy.domain.tld, что означает, что ответ свежий.

10
ответ дан 2 December 2019 в 00:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: