如何使用Python请求清除缓存?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Python请求清除缓存?相关的知识,希望对你有一定的参考价值。

Python的requests包是否默认缓存数据?

例如,

import requests
resp = requests.get('https://some website')

响应是否会被缓存?如果是,我该如何清除它?

答案

Python请求没有任何缓存功能。

但是,如果你需要它们,你可以看看requests-cache,虽然我从未使用它。

截至2018年,其最后一次发布是在2016年,因此似乎没有得到维护。

另一答案

添加'Cache-Control: no-cache'标头:

self.request = requests.get('http://google.com',
                            headers={'Cache-Control': 'no-cache'})
另一答案

默认情况下,请求不执行缓存。您可以使用CacheControl之类的东西轻松插入它。

另一答案

迟到的答案,但你没有清除缓存,python requests因为它没有缓存请求,你应该使用头Cache-ControlPragma代替,即:

import requests
headers = {
    ...
    "Cache-Control": "no-cache",
    "Pragma": "no-cache"
}
x = requests.get("site.tld", headers=headers)
...

HTTP/Headers

  • Cache-Control Cache-Control general-header字段用于为请求和响应中的缓存机制指定指令。缓存指令是单向的,这意味着请求中的给定指令并不意味着在响应中给出相同的指令。
  • Pragma 特定于实现的标头,可能在请求 - 响应链的任何位置具有各种影响。用于向后兼容尚未存在Cache-Control标头的HTTP / 1.0高速缓存。

指示

  • no-cache 强制缓存在发布缓存副本之前将请求提交到源服务器以进行验证。

关于Pragma的注意事项:

没有为HTTP响应指定Pragma,因此它不是一般HTTP / 1.1 Cache-Control标头的可靠替代品,尽管它的行为与Cache-Control相同:no-cache,如果省略了Cache-Control标头字段一个要求。仅将Pragma用于向后兼容HTTP / 1.0客户端。

以上是关于如何使用Python请求清除缓存?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MSW 和 Jest 时如何在请求之间的测试中清除 RTK 查询缓存?

如何解决IE浏览器缓存http请求

如何从片段外部清除/重置地图?

Nginx内容缓存

Bootstrap 4.1.3 modal body 保留 jquery 返回的数据。如何清除每个新请求的缓存?

如何只使用一句代码实现清除缓存的功能