Django ManifestStaticFilesStorage没有加载正确的静态文件

时间:2017-05-08 15:52:26

标签: django amazon-s3 django-storage

我正在使用django-storagesManifestStaticFilesStorage的组合来管理来自S3的静态文件和媒体。

class StaticStorage(ManifestFilesMixin, S3BotoStorage):
    location = settings.STATICFILES_LOCATION

当我运行collectstatic时,我可以在S3上看到最新版本的JS文件,其中包含正确的时间戳。

我还可以在staticfiles.json清单中看到该文件被引用。

然而,在浏览器中查看该网站时,我仍然看到旧的JS被拉下来,而不是manifest

中的那个

可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

您可以阅读this post了解详情。简而言之:

  

默认情况下,staticfiles.json将驻留在STATIC_ROOT中   收集所有静态文件的目录。我们托管所有的   S3存储桶上的静态资产,默认情况下为staticfiles.json   最终会被同步到S3。

因此,如果您的staticfiles.json被缓存,您的静态文件将是旧文件。

有两种方法可以解决这个问题:

  • 版本化staticfiles.json,就像您已经完成了静态文件一样
  • staticfiles.json保留在本地而不是S3

答案 1 :(得分:0)

textBox1.Text = myItem; 似乎在服务器启动时(从S3实例)加载了一次。如果在服务器运行时运行textBox1.Text = listBox1.SelectedItem.ToString(); ,则无法知道S3进行了更改。如果进行了更改,则需要在运行staticfiles.json之后重新启动服务器。