快速HTML缩小功能,django中间件,decorator
django-hmin的Python项目详细描述
django hmin公司
django(1.6+)html小型化中间件(另一个)。主要特点- 速度。10x(在大型html上可以是50x、100x、200x甚至更多)时间 比htmlmin快压缩html,删除注释,尊重(不 删除)默认条件注释(IE)使用缓存(可以是 禁用),这将大大减少HTML缩小开销。
兼容性
Django 1.6-Django 1.10
安装
对于安装django hmin,在终端上运行:
$ pip install django-hmin
额外安装选项
也可以安装re2(快速正则表达式)库 (pip install re2+请求)Hmin将使用它而不是re
使用MIDLEWARE
你只需要在你的 MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = ( # other middleware classes 'hmin.middleware.MinMiddleware', 'hmin.middleware.MarkMiddleware', )
如果您使用的是django的缓存中间件,MarkMiddleware应该 在FetchFromCacheMiddleware之后,应该在MinMiddleware之后 在UpdateCacheMiddleware:
之后MIDDLEWARE_CLASSES = ( 'django.middleware.cache.UpdateCacheMiddleware', 'hmin.middleware.MinMiddleware', # other middleware classes 'django.middleware.cache.FetchFromCacheMiddleware', 'hmin.middleware.MarkMiddleware', )
您可以选择指定HTML_MINIFY设置:
HTML_MINIFY = True
HTML_MINIFY设置的默认值是not DEBUG。你 如果要缩小html代码,只需要将其设置为True。 当启用DEBUG时。
URL排除
指定设置:
HMIN_EXCLUDE = ('^base/', '^admin/')
保留HTML注释
指定设置:
HMIN_REMOVE_COMMENTS = False
缓存
默认情况下,hmin中间件使用缓存(对于中小型应用非常有用 网站,而且对于大型网站,您肯定会使用ngx_pagespeed或其他 “大”解决方案)。您可以通过指定设置来禁用它:
HMIN_USE_CACHE = False
您还可以更改时间和缓存后端(如果需要,默认时间为 是3600,缓存后端-“默认”):
HMIN_CACHE_TIMEOUT = 86400 HMIN_CACHE_BACKEND = 'my_cache'
使用函数
只需导入函数minify:from hmin import minify,就可以了 把它和你想要的任何html一起使用功能定义: def minify(content, remove_comments=True)
使用decorator
只需导入decorator minify_平原: from hmin.decorators import minify_plain,您可以缩小任何 所需功能:
@minify_plain() def my_cool_func(): <...> return some_plain_html
或者,如果您想保留HTML注释:
@minify_plain(False) def my_cool_func(): <...> return some_plain_html
愚蠢的速度基准(1)
我尝试压缩1mb的html(我认为,您通常的html是 thiner)在我的i7笔记本电脑处理器上,用 Django调试工具栏。
Django开销大约40毫秒(全部),这是没有 缩小,只是简单的html、django等。
然后我安装hmin和htmlmin,只需查看调试工具栏 数字(这是非常愚蠢和简单的“基准”):使用hmin cpu 大约60ms(min)-使用htmlmin cpu大约1200ms(min)
减去开销,纯时间:hmin-20ms,htmlmin-1160ms。
也许,你可以得到其他的数字。但赫敏真的比 htmlmin公司
愚蠢的速度基准(2)
另外,我尝试在我的桌面i3(sandy bridge)上压缩2mb的html。
调试工具栏时间:-使用hmin cpu时大约220ms没有缓存, 而87ms使用高速缓存-使用htmlmin cpu大约是125000ms
django开销约为80ms。减去开销,纯时间:hmin- 140ms(7ms带缓存),htmlmin-ok。
当前问题
- 不尊重CData
许可证
谁在乎呢想怎么用就怎么用