有人可以解释django的gzip包之间的区别

时间:2014-09-05 15:44:40

标签: django gzip

好像他们有一个gzip_page装饰器用于视图

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。数据(对于表格),想知道哪种方式最好/差异是什么。

感谢您的任何信息!

1 个答案:

答案 0 :(得分:4)

如果您查看Django sources,您会看到gzip_page装饰者和GZipMiddleware实际上是同一件事:

gzip_page = decorator_from_middleware(GZipMiddleware)

所以没有任何区别(除了将中间件转换为装饰器所需的一些开销)。如果你只需要为一个特定视图启用gzip,你显然应该使用装饰器,但如果你想为整个项目启用gzip,请使用中间件。

作为旁注,如果你将gzipping放到你正在使用的任何web服务器上(Apache,nginx等),我相信你会得到更好的性能。

另请注意,您不应将gzip用于受HTTPS保护的网站,更多信息请点击此处:http://breachattack.com/