Flask-Caching FileSystemCache 方法不会在超时时删除缓存项
Flask-Caching FileSystemCache method does not delete cache items upon timeout
我有一个 Flask 应用程序,我已经实现了 "Flask-Caching" 扩展。我正在使用 "FileSystemCache" 方法。这对我来说是全新的,所以它可能工作正常,但我不知道。
我发现当我调用 cache.clear() 时,我会看到项目从指定为我的缓存位置的目录中删除。但是,当我将超时设置得非常短时,达到超时时长后我没有看到文件被删除。
我不确定它是否应该删除,或者我是否应该编写一个后台任务来删除所有早于超时设置的文件。每个文件很小,但它们累积起来非常快。
我希望有人告诉我这是否按预期工作。创建一个后台任务来清除目录是没有问题的,但看起来这应该是自动发生的。
相关代码方面,不多:
cache = Cache(app,config={'CACHE_TYPE': 'filesystem',
'CACHE_DIR': r"<my cache directory>",
'CACHE_DEFAULT_TIMEOUT': 15})
超时只有 15 秒以帮助我在这里进行测试,但稍后会增加。在我的整个代码中,我只是真正使用 @cache.memoize() 和偶尔的 cache.delete_memoized().
Flask-Caching 本身不一定会在超时后自动删除缓存项。通常,它只会在执行某些操作时这样做。例如,在 FileSystemCache
中,如果您查看 source code for the get()
function 可以看到,如果您尝试获取已过期的缓存项,它会删除该文件并且 returns None
.
此外,正在查看 source code for the set()
function, you can see the call to _prune()
(source code)。这是一个内部函数,它(如果缓存文件的数量超过构造函数中设置的阈值)将遍历缓存目录中的文件并删除过期文件。
您没有看到任何文件被删除的原因可能是因为即使超时很低,阈值也可能足够高,以至于您没有缓存足够的文件来开始删除一些文件。您可以使用 CACHE_THRESHOLD
config variable 设置可以缓存的最大文件数。
希望对您有所帮助!
我有一个 Flask 应用程序,我已经实现了 "Flask-Caching" 扩展。我正在使用 "FileSystemCache" 方法。这对我来说是全新的,所以它可能工作正常,但我不知道。
我发现当我调用 cache.clear() 时,我会看到项目从指定为我的缓存位置的目录中删除。但是,当我将超时设置得非常短时,达到超时时长后我没有看到文件被删除。
我不确定它是否应该删除,或者我是否应该编写一个后台任务来删除所有早于超时设置的文件。每个文件很小,但它们累积起来非常快。
我希望有人告诉我这是否按预期工作。创建一个后台任务来清除目录是没有问题的,但看起来这应该是自动发生的。
相关代码方面,不多:
cache = Cache(app,config={'CACHE_TYPE': 'filesystem',
'CACHE_DIR': r"<my cache directory>",
'CACHE_DEFAULT_TIMEOUT': 15})
超时只有 15 秒以帮助我在这里进行测试,但稍后会增加。在我的整个代码中,我只是真正使用 @cache.memoize() 和偶尔的 cache.delete_memoized().
Flask-Caching 本身不一定会在超时后自动删除缓存项。通常,它只会在执行某些操作时这样做。例如,在 FileSystemCache
中,如果您查看 source code for the get()
function 可以看到,如果您尝试获取已过期的缓存项,它会删除该文件并且 returns None
.
此外,正在查看 source code for the set()
function, you can see the call to _prune()
(source code)。这是一个内部函数,它(如果缓存文件的数量超过构造函数中设置的阈值)将遍历缓存目录中的文件并删除过期文件。
您没有看到任何文件被删除的原因可能是因为即使超时很低,阈值也可能足够高,以至于您没有缓存足够的文件来开始删除一些文件。您可以使用 CACHE_THRESHOLD
config variable 设置可以缓存的最大文件数。
希望对您有所帮助!