【问题标题】:Django 1.8 - how can staticfiles magically guess the hashed file nameDjango 1.8 - 静态文件如何神奇地猜测散列文件名
【发布时间】:2015-12-05 16:46:21
【问题描述】:

我将我的静态文件存储在 Amazon S3 上,并且我正在使用 Django 的缓存清除,我的存储类如下所示:

class MyStaticFilesStorage(ManifestFilesMixin, S3BotoStorage):
    ...

见: https://docs.djangoproject.com/en/1.8/ref/contrib/staticfiles/#manifeststaticfilesstorage

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

一切都很好,但我不明白如何。

  • 我的static 文件夹位于.gitignore 中,因此静态文件永远不会到达我的服务器。
  • django 创建的staticfiles.json 只存储在 S3 上,所以我去那里删除了它(这样我可以看看它是否有任何影响)。
  • 我可以 ssh 到服务器并验证没有名为 staticfiles.json 的文件,并且服务器上没有静态文件。

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

怎么样?没有映射(staticfiles.json),没有原始文件,django怎么知道hash?

【问题讨论】:

    标签: django amazon-s3


    【解决方案1】:

    我猜 Django 首先从 S3 获取 staticfiles.json 文件,然后从文件中读取映射。

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

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 1970-01-01
      • 2015-07-09
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2015-12-17
      • 1970-01-01
      相关资源
      最近更新 更多