2013-11-24 164 views
4

我想壓縮我的css和js文件並作爲gzip文件,但沒有成功。django css和js文件gzip壓縮heroku

我已經嘗試了所有方法,Django的管道,Django的壓縮機等

我Django的壓縮機創建gzip的文件,但我不知道如何爲他們服務。我使用GzipMiddleaware來壓縮和提供我的html文件。

任何人都可以寫一步一步的指導如何gzip和服務於heroku django上的靜態文件。

對不起,要求詳細的步驟,我不是要求勺子餵食,但我堅持了這個問題近24小時,現在嘗試了n個解決方案,但似乎沒有工作。

僅供參考,我使用的Django 1.5

在此先感謝您的幫助

+0

你用什麼來爲你的靜態文件?你是把他們推到s3,還是通​​過django來服務他們? – Thomas

+0

@Thomas我通過django提供靜態文件,並通過s3服務媒體文件。 – kumar

回答

2

你應該認真考慮上傳靜態文件到S3爲好。 Django確實不會提供服務文件,它會佔用應用程序服務器上的寶貴資源。

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

這裏有一個文章,解釋如何獲得S3服務gzip壓縮資源:http://www.jamiebegin.com/serving-compressed-gzipped-static-files-from-amazon-s3-or-cloudfront/

這裏有一個存儲後端,將collectstatic到S3。

您可能很容易地編寫一個存儲後端gzips 上傳到s3的子類化後端和django壓縮機的後端。

+0

感謝您的幫助。但是我的用戶很少訪問我的網站,它擋住了亞馬遜S3的防火牆。爲了確保網站對所有觀衆的基本工作,我決定不使用aws作爲靜態內容。你能否通過django協助提供靜態文件? – kumar

+2

我向你保證,gzip你的靜態文件不會對你的頁面加載時間有任何可觀的影響。瓶頸在於您正在從應用程序服務器提供靜態文件,而無需緩存或etags,位於無法緩存任何文件的負載均衡器之後。如果你想爲一些「少數」帶有延遲防火牆的用戶在腳下拍攝自己,那麼很好;但我不會告訴你槍的位置。 – Thomas

+0

托馬斯感謝您的見解。我不能同意更多,但少數用戶碰巧是我的網站非常重要的訪問者忽視。讓我試着找到更好的替代方案,或者是到處都可以訪問的CDN。謝謝你的幫助。任何一個與其他想法請。 – kumar

0

我有完全相同的問題。我正在使用grunt,但發現有很多額外的配置等等等等等,然後我發現django壓縮機真棒!

但我部署到Heroku,它不會gzip任何東西,並依靠應用程序來做到這一點。

我找不到任何提供預壓縮gzip文件的wsgi包裝,所以我擴展了dj-static來爲我做。看看我的fork的dj-static,其中包括增加。基本上它會檢查一個相應的以.gz結尾的靜態文件名,如果它找到它,它將代替它。我將這個用於我的Heroku項目。

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

要在開發服務器上測試,如果你運行內置的Web服務器Django的,一定要與--nostatic命令行開關運行它。即蟒蛇manage.py運行服務器0.0.0.0:80 - 靜態