使用Django将资产管理到CDN的最佳方式是什么?

问题描述:

当需要部署时,最好的做法是压缩静态资产(js,css)并将它们移动到CDN。有几个Django应用程序处理某些方面(django-compressor,django-pipeline每个想到),但他们每个人都有自己的问题。例如,使用Django将资产管理到CDN的最佳方式是什么?

  • django-compressor想要在请求/响应循环内部生成内容,即使启用了独占脱机压缩时也是如此。
  • django-pipeline不在任何地方存储哈希,因此它遍历它将压缩文件写入的路径,正则表达式匹配文件名,对这些文件进行排序可能匹配,并返回列表中的最后一项。尝试从CDN做到这一点!什么?!

的(貌似逻辑)管道的工作流程我在寻找的是:

  1. 压缩资产,采用的内容哈希的文件名
  2. 存储这些文件名中的高速缓存或模块或东西可以是容易当它是时候呈现HTML引用。

我不应该在我的所有Web前端节点上都有每个静态文件 - 只有CDN。

现在,我觉得我最好的选择是破解对缓存文件名散列的支持到django-pipeline,但我梦想着为此插入一个解决方案。

在Django中,我最好的选择是什么?有没有?

谢谢!

你在运行Django 1.3吗?如果是这样,那么你可以编写自己的custom file storage backend上传东西到CDN。幸运的是,如果你想使用亚马逊S3,那么django-storages已经做到了你想要的!

django-pipeline 1.1.12现在缓存哈希,所以你应该没事的,看看changelog

免责声明:我是django-pipeline的作者之一。