更新日志

版本 2.1.0

发布于 2024-10-08

  • 修复了 flask_caching.utils.make_template_fragment_key 中的类型签名。 :pr:`430`

  • 为 make_cache_key 添加了文档和示例

  • 支持 Flask 3

版本 2.0.2

发布于 2023-01-12

  • 修复了由于最新发布的 cachelib 导致的 boto3 依赖问题

  • flask_caching.backends.RedisCluster 依赖从 redis-py-cluster 迁移到 redis-py

  • 错误修复:使装饰视图函数的 make_cache_key 属性可写。 :pr:`431`, :issue:`97`

版本 2.0.1

发布于 2022-07-30

  • 放宽依赖版本限制以允许 Flask 2.x.x

版本 2.0.0

发布于 2022-06-26

  • 修复了 flask_caching.backends.RedisSentinelCache.get_many 会查询错误主机和端口组合的错误。 :pr:`372`

  • 移除了 flask_caching.backends.FileSystemCache 方法覆盖。它现在 100% 共享 cachelib.FileSystemCache API 并且完全兼容。依赖于旧版本中方法覆盖实现细节的功能可能不再有效。 :pr:`369`

  • 添加了对底层缓存客户端的 has 方法的代理。 :pr:`356`

  • flask_caching.backends.FileSystemCache 现在以通用(非框架化)方式存储时间戳,遵循最新版本的 cachelib.FileSystemCache。此更改还将开销从 17 字节(通过之前使用 pickle 的方法)减少到 4 字节(使用 python 的 struct)。但是,由于旧的时间戳使用不同的策略序列化,因此这将破坏兼容性。

版本 1.11.1

发布于 2022-05-27

版本 1.11.0

发布于 2022-05-27

  • 添加了对缓存/记忆化生成器的支持。 :pr:`286`

  • 添加了对 Flask 2.0 异步的支持。 :pr:`282`

  • 现在使用 Cachelib 作为后端。 :pr:`308`

  • 放弃对 python 3.6 的支持。 :pr:`332`

  • 添加了对动态缓存超时的支持 #296

  • 修复了 RedisSentinelCache 中 redis 的 CACHE_OPTIONS 读取中的错误。 :pr:`343`

版本 1.10.1

发布于 2021-03-17

  • 一个 GoogleCloudStorageCache 后端已添加到用户贡献的缓存后端中。 :pr:`214`

  • 修复了上个版本中引入的回归,该回归破坏了所有继承 Cache 类的应用程序。

  • 添加了 test_generic_get_bytes 测试用例。 :pr:`236`

  • 各种改进和修复。

版本 1.10.0

发布于 2021-03-04

  • 重要: 加载缓存后端的方式已重构。现在可以传递缓存后端类的完整路径,而不是传递初始化函数的名称。例如:CACHE_TYPE="flask_caching.backends.SimpleCache"。在下一个主要版本 (2.0) 中,这将是唯一支持的方式。

  • UWSGICache 不再是官方支持的,并已移至用户贡献的后端。

  • 从 Travis-CI 切换到 GitHub Actions

  • 修复了 RedisCache 中没有超时的 add()。 :pr:`218`

  • 修复了 FileSystemCache 计算文件数量时的错误。 :pr:`210`

  • 已添加类型注释。 :pr:`198`

  • 为 SimpleCache 和 FileSystemCache 添加了一些基本日志记录,以提高可观察性。 :pr:`203`

  • 在 memoize 中添加了忽略 args 的选项 :pr:`201`

  • 停止将 wheels 标记为与 Python 2 兼容。 :pr:`196`

  • 修复了 default_timeout 未正确传递给其父构造函数的问题。 :pr:`187`

  • 修复了函数 _memoize_make_cache_key 中未传递 kwargs 的问题。 :pr:`184`

  • 添加了 Redis 集群模式缓存后端。 :pr:`173`

  • 不要让 PIP 在不支持的 Python 版本上安装此软件包。 :pr:`179`

  • 通过检查 uWSGI 是否启用了 'cache2' 选项来修复 uWSGI 初始化。 :pr:`176`

  • 文档更新和修复。

版本 1.9.0

发布于 2020-06-02

  • 添加了一个选项,用于在生成缓存键时包含函数的源代码。 :pr:`156`

  • 添加了一个功能,允许完全控制缓存键的生成方式。例如,现在可以实现一个基于 POST 请求生成缓存键的函数。 :pr:`159`

  • 通过将缓存后端名称从 simple 重命名为 simplecachenull 重命名为 nullcache,以及 filesystem 重命名为 filesystemcache,修复了缓存后端命名冲突。

  • 显式地将 default_timeoutRedisSentinelCache 传递到 RedisCache

  • 由于 Windows 在 dst 文件已存在时会引发 OSError,因此使用 os.replace 而不是 werkzeug 的 rename

  • 文档更新和修复。

版本 1.8.0

发布于 2019-11-24

  • 重大更改: 移除了对 Python 2 的支持。从现在开始支持 Python 3.5 及更高版本。

  • 添加了选项以指定 None 是否为缓存值。请参阅 :pr:`140`#141

  • 允许使用 __caching_id__ 而不是 __repr__ 作为对象缓存键。 :pr:`123`

  • RedisCache 后端现在支持通过可调用对象生成 key_prefix。 :pr:`109`

  • 如果 CACHE_TYPE 设置为 filesystem 但未设置 CACHE_DIR,则发出警告。

  • 修复了 Google App Engine Memcache 后端。有关更多详细信息,请参阅问题 #120

  • 各种文档更新和修复。

版本 1.7.2

发布于 2019-05-28

这是支持 Python 2 的最后一个版本!

  • 如果缓存的返回值是 None,则不运行缓存/记忆化函数。 :pr:`108`

版本 1.7.1

发布于 2019-04-16

  • 通过使用 varkw 修复了检查 Python 3 函数的问题。 :pr:`101`

  • 移除了 PyPI 包中的残留文件 (uwsgi.py)。有关更多详细信息,请参阅问题 #102

版本 1.7.0

发布于 2019-03-29

  • 添加了一个名为 'response_filter' 的功能,该功能使人们能够仅根据响应代码缓存视图。 :pr:`99`

  • DeprecationWarning 已转换为 TypeError。

版本 1.6.0

发布于 2019-03-06

  • delete_many 函数现在能够忽略任何错误并继续删除缓存。但是,为了保持向后兼容性,默认模式是中止删除过程。为了使用新的删除模式,必须将配置设置 CACHE_IGNORE_ERRORS 翻转为 True。这过去并且现在仍然只与 filesystemsimple 缓存后端相关。 :pr:`94`

  • 重新添加了 gaememcached CACHE_TYPE 以提高向后兼容性。

  • 文档改进

版本 1.5.0

发布于 2019-02-23

  • 添加了对 Redis Sentinel 集群的支持。 :pr:`90`

  • 参数化哈希函数,以便可以使用替代方案。 :pr:`77`

  • 在 Flask-Caching 中包含了已弃用的 werkzeug.contrib.cache 模块。 :pr:`75`

版本 1.4.0

发布于 2018-04-16

  • 修复了在 memoize 中为 var args 创建键的逻辑。 :pr:`70`

  • 通过使 UWSGICache 后端有条件地允许较旧的 Werkzeug 版本。 :pr:`55`

  • 一些文档改进。 :pr:`48`, #51, #56, #67

  • 一些 CI 改进。 :pr:`49`, #50

版本 1.3.3

发布于 2017-06-25

  • 添加了对多个查询参数的支持,并使用 md5 进行一致的哈希处理。 :pr:`43`

版本 1.3.2

发布于 2017-06-25

  • 修复了使用 Python 3 时的 spreadsaslmemcached 后端。

  • 修复了在使用 Python 3.6 或更高版本记忆化函数时的 kwargs 顺序。请参阅 #27

版本 1.3.1

发布于 2017-06-20

  • 避免 Werkzeug<0.12 环境的破坏,因为 uwsgi 后端依赖于 Werkzeug >=0.12。请参阅 #38

版本 1.3.0

发布于 2017-06-17

  • 添加了 uWSGI 缓存后端(需要 Werkzeug >= 0.12)

  • 在 cached 装饰器中提供了一个关键字 query_string,以便为不同的查询字符串请求创建相同的缓存键,只要它们具有相同的键/值(顺序无关紧要)。 :pr:`35`

  • 使用 pytest 作为测试套件和测试运行器。此外,测试已拆分为多个文件,而不是只有一个大文件。

版本 1.2.0

发布于 2017-02-02

  • 允许使用 kwargs 的函数被正确地记忆化。请参阅 #18

版本 1.1.1

发布于 2016-12-09

  • 修复了 PyPI 包分发。请参阅 #15

版本 1.1.0

发布于 2016-12-09

  • 修复了 'redis' 后端导入机制。请参阅 #14

  • 将后端设为一个模块,以更好地控制要公开的缓存后端,并将我们的自定义客户端移至后端模块内的自有模块中。另请参阅 #14(以及部分自有更改)。

  • 一些文档和测试更改。请参阅 #8#12

版本 1.0.1

发布于 2016-08-30

  • addset 等缓存包装器现在返回包装结果,正如人们所期望的那样。请参阅 #5

版本 1.0.0

发布于 2016-07-05

  • 更改了导入 Flask-Cache 的方式。不再使用已弃用的方法导入 Flask 扩展(通过 flask.ext.cache),而是使用扩展的名称 flask_cache。有关此事的更多信息,请查看 Flask 的文档。这也修复了 Flask 中的弃用警告。

  • 大量的 PEP8 和文档修复。

  • 将此分支重命名为 Flask-Caching (flask_caching),因为它现在可以在 PyPI 上下载。

除了上述修复之外,以下拉取请求已合并到 Flask-Cache 的此分支中

  • #90 更新文档:路由装饰器在缓存之前

  • #95 将 memoize 参数传递到 unless() 中。

  • #109 包装函数被调用两次

  • #117 将设置 app 属性移至 _set_cache 方法

  • #121 修复 delete_memoized 的文档

  • #122 为 werkzeug get_dict 添加代理

  • #123 ‘cache’ 和 ‘memoize’ 装饰器的 “forced_update” 选项

  • #124 修复处理 utf8 键参数 (cherry-picked)

  • #125 修复 redis 单元测试失败的问题

  • #127 改进了在视图上使用 @cached 的文档

  • #128 delete_memoized 的文档

  • #129 尝试使用 signature 或 getfullargspec 替换 inspect.getargspec (如果可能)

  • make_cache_key() 返回不正确的键 (cherry-picked)

版本 0.13

发布于 2014-04-21

  • 移植到 Python >= 3.3(2.x 需要 Python 2.6/2.7)。

  • 修复了使用大于默认超时的每个记忆化超时时间的错误

  • 为每个实例的记忆化添加了更好的支持。

  • 各种错误修复

版本 0.12

发布于 2013-04-29

  • 更改 jinja2 缓存模板以使用稳定的可预测键。以前,缓存标记的键包括模板的行号,这使得在应用程序外部很难预测键是什么。

  • 添加了配置变量 CACHE_NO_NULL_WARNING,以在使用 'null' 缓存作为测试一部分时消除警告消息。

  • 添加了传递以清除整个缓存后端。

版本 0.11.1

发布于 2013-04-7

  • 修复了在实例方法上使用 memoize 的错误。之前的键是 id(self),新键是 repr(self)

版本 0.11

发布于 2013-03-23

  • 如果缓存后端引发异常,则在生产环境中优雅地失败。

  • 对 redis DB 编号的支持

  • Jinja2 模板标签缓存现在将所有参数连接在一起到一个键中,而不是将每个参数视为单独的键名。

  • 添加了删除 memcache 版本哈希函数

  • 再次支持单个应用程序上的多个缓存对象。

  • 添加了 SpreadSASLMemcached,如果值大于 memcached 阈值(默认为 1MB),则会将该值拆分到多个键中。

  • 添加了使用 URL 连接到 redis 的支持。

版本 0.10.1

发布于 2013-01-13

  • 在使用 'null' 缓存类型时添加了警告消息

  • 将导入更改为相对导入而不是绝对导入,以实现 AppEngine 兼容性

版本 0.10.0

发布于 2013-01-05

  • 添加了 saslmemcached 后端以支持 SASL 身份验证后面的 Memcached。

  • 修复了当 args 数量 != kwargs 数量时 memoize 的错误

版本 0.9.2

发布于 2012-11-18

  • 默认 kwargs 的错误修复

版本 0.9.1

发布于 2012-11-16

  • 修复了在使用默认 kwargs 的函数上 memoized 损坏的问题

版本 0.9.0

发布于 2012-10-14

  • 修复了在方法上 memoization 的工作方式。

版本 0.8.0

发布于 2012-09-30

  • 迁移到 flask 扩展的新命名约定 flask_cache 而不是 flaskext.cache

  • 移除了 setup.py 文件中不必要的依赖项。

  • 文档更新

版本 0.7.0

发布于 2012-08-25

  • 允许多个缓存对象使用不同的配置值进行实例化。

版本 0.6.0

发布于 2012-08-12

  • 对于使用相同后备存储的多个应用程序,记忆化现在更安全。

  • 如果 Flask 应用程序设置为 testing=True,则移除了显式设置 NullCache 的操作

  • 交换了 key_prefix 的条件顺序

版本 0.5.0

发布于 2012-02-03

  • 删除记忆化函数现在可以在生产环境中正常运行,其中应用程序的多个实例正在运行。

  • get_memoized_names 和 get_memoized_keys 已被删除。

  • 为 memoize 添加了 make_name,make_name 是一个可选的可调用对象,可以传递给 memoize 以修改生成的 cache_key。

  • 为 memoize 添加了 unless,这与 cached 中的 unless 参数相同

  • 记忆化现在将所有 kwargs 转换为位置参数,这是为了当以多种方式调用函数时,它将评估为相同的 cache_key

版本 0.4.0

发布于 2011-12-11

  • 为装饰函数添加了 uncached、make_cache_key、cache_timeout 属性。

版本 0.3.4

发布于 2011-09-10

  • 缓存键的 UTF-8 编码

  • cached 装饰器的 key_prefix 参数现在支持可调用对象。

版本 0.3.3

发布于 2011-06-03

对记忆化缓存使用 base64。这修复了罕见的问题,即 cache_key 是元组或大于缓存后端能够支持的大小。

添加了基于函数参数可选删除记忆化缓存的支持。

Python 2.5 兼容性,以及 string.format 的错误修复。

添加了检索记忆化函数名称或缓存键的功能。

版本 0.3.2

错误修复版本。修复了如果未提供 CACHE_TYPE 则会导致异常的错误。

版本 0.3.1

Pypi egg 修复。

版本 0.3

  • CACHE_TYPE 已更改。现在是 [‘null’, ‘simple’, ‘memcached’, ‘gaememcached’, ‘filesystem’] 之一,或指向将实例化缓存对象的函数的导入字符串。这使 Flask-Cache 更加可扩展和可配置。

版本 0.2

  • CACHE_TYPE 现在使用 import_string。

  • 添加了 CACHE_OPTIONS 和 CACHE_ARGS 配置值。

  • 添加了 delete_memoized

版本 0.1

  • 初始公开版本