2010-10-19 105 views
4

我試着分析我的web應用程序,報告的瓶頸之一是缺少gzip壓縮。我開始在Django中安裝gzip中間件,並獲得了一些提升,但是一個新的報告顯示它只是對gmail文件進行gzip壓縮,也就是Django處理的任何內容。有沒有辦法讓我的kludge/hack/force/make中間件gzip我的CSS和我的JS?我可以在Django中壓縮JavaScript和CSS文件嗎?

有人請回答我的問題。我已經有點失落了。

  • 我可能會得到它錯了,但 人gzip壓縮CSS和JS的, 不是嗎?
  • Django不壓縮 JS和CSS對於某些瀏覽器 兼容性問題?
  • 正在壓縮 並縮小相同的東西?

謝謝。

回答

1

謝謝大家。

看來,Django中的Gzip中間件DOES壓縮CSS和JS。

我正在使用Google的Firebug的Page Speed插件來分析我的頁面,看起來它是基於我本地緩存中的CSS和JS的舊副本(非gzipped版本)生成報告。這些副本在我啓用Gzip中間件之前就已存在。我刷新了緩存,看起來報告完全顯示了不同的結果。

2

關注丹尼爾·羅斯曼的建議,「你的CSS和JS不應通過Django的可以去您的生產系統上」

如果你想通過Django的服務,然後 可以壓縮CSS,JS文件使用django-compressordjango-compress

4

您應該考慮將您的django應用程序放置在HTTP反向代理之後。

您可以配置apache作爲您的django應用程序的反向代理,儘管許多人似乎更喜歡在這種情況下使用nginx或lighttpd。

HTTP反向代理基本上是直接在Web應用程序前設置的代理。瀏覽器從反向代理髮出請求,反向代理將請求轉發給Web應用程序。反向代理還可以執行一些有趣的事情,如處理ssl,處理gzip壓縮所有響應以及處理服務靜態文件。

14

您的CSS和JS應該而不是需要通過您的生產系統上的Django。你需要配置Apache(或Nginx,或其他)來提供這些,當你這樣做時,你將能夠在那裏設置gzip壓縮,而不是在Django。

不,壓縮和縮小不是一回事。 GZip壓縮是在服務器響應您的請求時動態完成的,並且瀏覽器在收到文件時會透明地解壓縮文件。縮小是從文件中移除註釋和空白的過程,有時將多個文件連接成一個(即一個CSS和一個JavaScript,而不是每個文件都有很多)。這是在您將文件部署到服務器時完成的 - 按照Ashok的建議,通過django-compress或通過外部類似於YUI compressor的東西,並且瀏覽器不嘗試重建原始文件 - 這是不可能的,也是不必要的。

相關問題