2017-03-28 24 views
0

我有一個與Gunicorn的Django應用程序,通過清漆和Nginx服務。Django,Nginx&Varnish gzip params被激活

MyDjangoApp - > Gunicorn - >光油 - > Nginx的 - >客戶端

這gzip的PARAMS我要保持一個?

在Django?

MIDDLEWARE_CLASSES = (
    # Remove Django Gzip middleware as we already have it in nginx ? 
    'django.middleware.gzip.GZipMiddleware', 
    .... 

在Nginx的?

http { 
    gzip on; 
    gzip_disable "msie6"; 
    gzip_vary on; 
    gzip_proxied any; 
    .... 

清漆?

sub vcl_backend_response { 
    if (bereq.url ~ "html$") { 
      set beresp.do_gzip = true; 
    } 
.... 

是否必須在所有conf或Just Nginx上激活? 如果我激活Django中的GZipMiddleware for ex,我不需要激活它在光油& Nginx或我失去了一些東西?

+0

使用varnish和nginx是不是有點矯枉過正? – e4c5

回答

1

我的方法到gzip壓縮,應該做的是這樣的:

啓用其後面光油在Web服務器上的gzip。

就你而言,你可以保留在Django中。

不要改變默認的Varnish gzip參數。 (讓它使用default behaviour來處理gzip)

爲什麼?

  • 清漆可以將gzipped對象存儲在其緩存中(很好,可以節省存儲空間)。
  • 沒有CPU時間將同時服務於緩存對象(大部分客戶會要求壓縮的對象和光油可以只直接服務於它)

所以,你會做節省CPU和RAM可花費壓縮壓縮到適當的水平。

+0

似乎邏輯,我是否必須禁用Nginx上的gzip,因爲它已經被Django壓縮了? – kollo

+0

因爲Nginx會看到gzip的響應並且不會執行雙重gzip,所以保持安全。 –