Django Whitenoise缓存破坏控制

时间:2016-06-27 12:05:09

标签: django caching

我已经运行manage.py collectstatic并且Whitenoise已经对所有静态文件进行了后处理。如果我想更改/更新某些文件,例如我的.css样式表,我现在不知道该怎么办?我应该在每次更改文件时运行manage.py collectstatic吗?我问这个是因为我的开发服务器大约需要45分钟来完成这项任务,而且我不确定这是否正常,因为我只有550个静态文件,总共250Mb。

其次,由于Whitenoise不支持提供媒体文件,我使用Amazon CloudFront。如何使用用户上传的媒体文件控制缓存清除?这对我来说非常重要。

1 个答案:

答案 0 :(得分:0)

是的,每次文件更改时,您都需要运行collectstatic

拥有250MB的静态文件非常不寻常。此外,由于Django的缓存清除会创建一个具有唯一名称的每个文件的副本,因此您最终会得到每个文件的两个副本,这样就已经有500MB了。除此之外,WhiteNoise将为每个文件创建gzip压缩版本,以便您可以使用1GB的文件。

加快此过程的一种快捷方法是告诉WhiteNoise不要压缩您的PDF文件,您可以通过将.pdf添加到WHITENOISE_SKIP_COMPRESS_EXTENSIONS设置来执行此操作。

听起来您的宣传册会更好地存储为用户媒体,而不是静态资产。

要控制缓存,您应该让代码在上传时为每个文件生成一个唯一的名称(将随机字符串作为文件名的前缀添加应该可以解决)。然后,您可以根据需要在这些文件上设置缓存标头。