【问题标题】:django css and js files gzip compression on herokudjango css 和 js 文件在 heroku 上 gzip 压缩
【发布时间】:2013-12-09 08:39:54
【问题描述】:

我正在尝试压缩我的 css 和 js 文件并将其用作 gzip 文件,但没有成功。

我已经尝试了所有方法,django-pipeline、django-compressor 等。

我得到了 django-compressor 来创建 gzip 文件,但我不知道如何为它们提供服务。我使用 GzipMiddleaware 来压缩和提供我的 html 文件。

谁能写下关于如何在 heroku django 上 gzip 和提供静态文件的分步指南。

很抱歉询问详细步骤,我不是要求被喂食,而是被这个问题困扰了将近 24 小时,尝试了 n 种解决方案,但似乎没有一个有效。

仅供参考,我使用的是 django-1.5

提前感谢您的帮助

【问题讨论】:

  • 您使用什么来提供静态文件?你是把他们推到 s3,还是通​​过 django 为他们服务?
  • @Thomas 我通过 django 提供静态文件并通过 s3 提供媒体文件。

标签: python django heroku gzip django-compressor


【解决方案1】:

您也应该认真考虑将静态文件上传到 s3。 Django 真的不适合提供文件,它会消耗你的应用服务器上的宝贵资源。

以下是将 s3 用于静态文件的一些重要原因。 http://blog.doismellburning.co.uk/2012/07/14/using-amazon-s3-to-host-your-django-static-files/

这里有一篇文章解释了如何让 S3 为压缩资源提供服务:http://www.jamiebegin.com/serving-compressed-gzipped-static-files-from-amazon-s3-or-cloudfront/

这是一个将收集静态数据到 s3 的存储后端。

您可能很容易编写一个存储后端,通过将该后端和 django-compressor 的后端子类化,将 gzip 压缩上传到 s3。

【讨论】:

  • 感谢您的帮助。但是我的用户很少访问我的网站,它阻止了亚马逊 s3。为了确保网站对所有受众的基本工作,我决定不将 aws 用于静态内容。您能否在通过 django 提供组合静态文件方面提供帮助。
  • 我向您保证,压缩静态文件不会对您的页面加载时间产生任何明显影响。瓶颈是您从应用程序服务器提供静态文件,没有缓存或 etag,位于无法缓存任何内容的负载均衡器后面。如果您想为了几个“少数”防火墙的用户而自取其辱,那很好;但我不会告诉你把枪放在哪里。
  • Thomas 感谢您的见解。我完全同意,但少数用户恰好是我网站的非常重要的访问者,可以忽略。让我试着找到一个更好的替代方案,一个随处可访问的 CDN。谢谢你的帮助。请有其他想法的人。
  • 谢谢托马斯。我现在使用 gae 来提供静态文件,django 压缩器非常棘手,不得不编写 bash 脚本来处理手动工作。
【解决方案2】:

我遇到了完全相同的问题。我正在使用 grunt,但发现有很多额外的配置等等等等,然后我发现 django-compressor 太棒了!

但我部署到 Heroku,它不会压缩任何东西,而是依靠应用程序来完成。

我找不到任何提供预压缩 gzip 文件的 wsgi 包装器,所以我扩展了 dj-static 来为我做这件事。查看我的 dj-static 分支,其中包括添加内容。基本上,它将检查以 .gz 结尾的相应静态文件名,如果找到它,它将代替它提供服务。我将它用于我的 Heroku 项目。

https://github.com/hdickson/dj-static

如果您运行 django 内置 Web 服务器,要在您的开发服务器上进行测试,请务必使用 --nostatic 命令行开关运行它。即python manage.py runserver 0.0.0.0:80 --nostatic

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多