使用Django将资产传输到CDN的最佳方法是什么?

时间:2011-08-22 03:52:46

标签: python django deployment cdn

到了部署时,最好的做法是压缩静态资产(js,css),然后将它们移动到CDN。有一些Django应用程序可以处理某些方面(每个都会想到django-compressordjango-pipeline),但每个方面都有自己的问题。例如,

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

我正在寻找的(看似合乎逻辑的)管道工作流程是:

  1. 使用文件名
  2. 的内容哈希值压缩资源
  3. 将这些文件名存储在缓存或模块中,或者 存储时,可以在呈现HTML时轻松地引用
  4. 我不应该在我的所有Web前端节点上都有静态文件 - 只有CDN。

    现在,我觉得我最好的选择是破解对django-pipeline缓存文件名哈希的支持,但我正在为此设计一个简单的解决方案。

    Django的最佳选择是什么?有没有?

    谢谢!

2 个答案:

答案 0 :(得分:6)

django-pipeline 1.1.12现在正在缓存哈希值,所以你应该没问题,请参阅changelog

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

答案 1 :(得分:1)

你在运行Django 1.3吗?如果是这样,那么您可以编写自己的custom file storage backend,将内容上传到CDN。幸运的是,如果您想使用Amazon S3,那么django-storages已经完全符合您的要求!