【发布时间】:2013-07-29 15:10:36
【问题描述】:
基本上,缓存破坏文件上的哈希不会更新。
class S3PipelineStorage(PipelineMixin, CachedFilesMixin, S3BotoStorage):
pass
PIPELINE_JS = {
'main.js': {
'output_filename': 'js/main.min.js',
'source_filenames': [
'js/external/underscore.js',
'js/external/backbone-1.0.0.js',
'js/external/bootstrap-2.2.0.min.js',
]
}
}
当我第一次运行collectstatic 命令时,它正确地创建了一个名为“main.min.d25bdd71759d.js”的缓存清除文件
但是,现在当我运行该命令时,它无法在后期处理阶段覆盖该缓存文件(并更新哈希)。
它不断更新“main.min.js”,这样main.min.js 在我的文件系统中是最新的。但是,不会创建新的缓存文件。即使底层 main.min.js 文件已更改,它仍保留相同的旧哈希。
当我手动删除 AWS 上的缓存文件时,我在运行 collectstatic 时收到以下消息,详细程度设置为 3:
Post-processed 'js/main.min.js' as 'js/main.min.d25bdd71759d.js
settings.DEBUG 设置为False
为什么哈希不更新?
【问题讨论】:
-
请显示相关设置:PIPELINE_ENABLED、STATICFILES_STORAGE、STATICFILES_FINDERS
-
能确定main.min.js和上一个不一样吗?如果文件本身没有任何更改,则哈希不会更改。看起来你只在 main.js 中包含了你不应该编辑的库,所以这就是我问的原因。
-
您提到了您的用户 AWS 存储(我想是 boto)。如果您将静态管道传输到本地文件夹(而不是 AWS),您能否检查问题是否仍然重现。我想这很可能是 boto 问题。
-
您的时区是否设置为 UTC 以西?这可能会导致
collectstatic和S3BotoStorage出现问题。
标签: django caching django-staticfiles django-pipeline