发行说明#

0.13.1#

  • 已移除对旧序列化格式的支持。

  • 将序列化实现移动到自己的方法中。

  • 不再支持低于 3.7 的 Python 版本。

0.13.0#

已撤销

该项目已迁移到 PSF 组织。

  • 在序列化和反序列化响应时,放弃 strict 属性。

  • 修复由 urllib3 2.0 引发的 IncompleteRead 错误。

  • 不再使用 utcnow,转而使用支持时区的日期时间。

  • 移除 compat 模块。

  • 使用 Python 的 unittest.mock 库,而不是 mock

  • 添加类型注释。

  • 从 wheel 中排除 tests 目录。

0.12.14#

  • 恢复更改“将 lockfile 切换到 filelock”以修复兼容性问题。

0.12.13#

  • 在序列化和反序列化响应时,放弃 strict 属性。

  • 修复由 urllib3 2.0 引发的 IncompleteRead 错误。

  • 从 wheel 中排除 tests 目录。

0.12.11#

0.12.7#

  • 不再支持 Python 2.7、3.4、3.5。

  • 缓存大文件时减少内存使用。

0.12.0#

我们现在使用 MessagePack (http://msgpack.org/) 而不是使用压缩 JSON 来缓存值。MessagePack 的优点是序列化和反序列化速度更快,尤其是在缓存大型二进制有效负载时。

0.11.2#

此版本引入了 cachecontrol.heuristics.LastModified 启发式算法。当没有提供明确的过期时间时,它使用与许多浏览器相同的方式,根据 Last-Modified 标头为过期时间设定基础。

0.11.0#

最大的改变是引入了使用压缩 JSON 而不是 pickle 来存储缓存值。这允许 Python 3.4 和 Python 2.7 使用相同的缓存存储。以前,如果在 3.4 上创建了缓存,2.7 客户端将无法加载它,从而导致无效的缓存未命中。使用 JSON 还可以避免 pickle 中使用的 exec 调用,通过避免潜在的代码注入点来提高缓存的安全性。最后,压缩 JSON 是一个更小的有效负载,节省了一点空间。

为了支持 JSON 格式中的任意二进制数据,使用 base64 编码将数据转换为字符串。它必须进行一些编码转换以确保字节/字符串类型正确,所以如果你发现任何问题,打开一个新问题。

此版本还引入了 cachecontrol.heuristics.ExpiresAfter 启发式算法。这允许传入参数,如 datetime.timedelta,以配置所有响应在特定时间段内缓存。

0.10.0#

这是一个重要的版本,因为它改变了实际缓存的内容。我们现在缓存的是底层 urllib3 响应对象,而不是缓存请求的 Response 对象。此外,只有当响应实际上被用户使用时,才会缓存响应。

这些更改允许重新引入 .raw 支持。

非常感谢 @dstufft 提供这些优秀的补丁,并为 CacheControl 投入了大量工作,让缓存响应的行为与普通响应完全一致。

  • FileCache 更新(通过 @dstufft)

    • 文件现在通过 sha-2 进行哈希处理

    • 文件存储在命名空间目录中,以避免达到目录中文件数量的操作系统限制。

    • 在读取/写入时使用 io.BytesIO(通过 @alex)

  • #19 通过 @cournape 允许使用自定义控制器

  • #17 通过 @farwayer 使用最高协议版本进行序列化

  • #16 FileCache:通过 @farwayer 进行原始字段序列化

0.9.3#

  • #16:所有缓存的响应的原始属性都为 None。

  • #13 在文件缓存中切换到 md5 编码的键(通过 @mxjeff)

  • #11 修复测试中的时区(通过 @kaliko)