2014-09-05 137 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

相关问题