2014-09-05 39 views
1

好像他們有意見gzip_page裝飾有人可以解釋Django的gzip的包之間的差異

from django.views.decorators.gzip import gzip_page 

@gzip_page 
def viewFunc(request): 
    return HttpResponse("hello"*100) 

參考這裏:https://docs.djangoproject.com/en/1.4/topics/http/decorators/#module-django.views.decorators.gzip

以及中間件類,你可以添加到設置,然後使用。

MIDDLEWARE_CLASSES = (
django.middleware.gzip.GZipMiddleware, 
... 

) 

from django.middleware.gzip import GZipMiddleware 
gzip_middleware = GZipMiddleware() 
def dec(request, *args, **kwargs): 
    response = func(request, *args, **kwargs) 
    return gzip_middleware.process_response(request, response) 
    return dec 

使用頁面裝飾那種加快了巨大的ammt的渲染。的數據(對於一張桌子),想知道哪種方式是最好的/差異是什麼。

感謝您的任何信息!

回答

4

如果您在Django sources看,你會看到gzip_page裝飾和GZipMiddleware其實都是同一件事:

gzip_page = decorator_from_middleware(GZipMiddleware) 

所以有在所有(沒有區別除了轉換中間件需要一些開銷裝飾者)。如果你只需要爲一個特定的視圖啓用gzip,你顯然應該使用裝飾器,但是如果你想爲整個項目使用gzip,就使用中間件。

一點題外話,我敢肯定,如果你離開任何Web服務器使用的是(Apache時,Nginx的,等等)

另外要注意,你不應該使用gzip壓縮到你會得到更好的性能gzip爲HTTPS保護的網站,更多在這裏:http://breachattack.com/

+0

謝謝,非常有幫助。我已經讀過,讓服務器gzip更好,但通過(一小段試驗)發現gzip比我的本地服務器更快。我想真正的生產服務器會更快。無論哪種方式,我們都使用HTTPS,所以我不會使用django的包 - 我完全不知道gzip是HTTPS的關注點。 – amchugh89 2014-09-05 17:31:16

+0

@ amchugh89 gzip根本不應該與HTTPS一起使用(除非你真的知道你在做什麼)。即使它是通過網絡服務器完成的。 – 2014-09-05 18:19:06

+0

你知道如何檢查Web服務器是否在壓縮?我不是'服務器人',但我想與他分享這些信息 – amchugh89 2014-09-05 18:29:13

相關問題