Django 1.8 - 静态文件如何神奇地猜测散列文件名

Dan*_*ofe 5 django amazon-s3

我将我的静态文件存储在Amazon S3上,而我正在使用Django的缓存清理,我的存储类看起来像这样:

class MyStaticFilesStorage(ManifestFilesMixin, S3BotoStorage):
    ...
Run Code Online (Sandbox Code Playgroud)

请参阅:https: //docs.djangoproject.com/en/1.8/ref/contrib/staticfiles/#manifeststaticfilesstorage

运行后, manage.py collectstatic所有静态文件都上传到S3,文件名中包含缓存清除哈希值.

一切都很好但我无法理解.

  • 我的static文件夹在.gitignore静态文件从未到达我的服务器.
  • staticfiles.json该Django的将创建仅存储在S3上,所以我去那里,并删除了它(这样我就可以看它是否有任何影响).
  • 我可以ssh到服务器并验证没有调用staticfiles.json文件,并且服务器上没有静态文件.

但是,Django仍然在服务器上生成具有正确哈希的正确静态URL(例如:main.c076b26cc1a7.css).

怎么样?django如何在没有映射(staticfiles.json)且没有原始文件的情况下知道哈希?

Jes*_*oto 1

我\xc2\xb4m猜测Django首先从S3获取staticfiles.json文件,然后从该文件读取映射。

\n\n

即使您的静态文件夹位于.gitignore中,当您运行.gitignore 时manage.py collectstatic,您也是在告诉 Django 查看静态文件夹,因此它知道必须从那里获取它们。不要\xc2\xb4t忘记你不\xc2\xb4t使用上传静态文件夹中的内容git pull,你使用manage.py collectsatic

\n