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?
Интересно, он где-то кеширует что-то, верно?
Нет.
Если вы не видите новых данных, это может быть вызвано многими причинами. Большинство крупных веб-сервисов используют кэширование на стороне сервера из соображений производительности, например, используя кэширующие прокси-серверы, такие как 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
, что означает, что ответ свежий.