Python框架的HTML压缩器(尽管名称中包含Django,但不仅限于Django)。
项目描述
django-html是一个支持HTML 5的Python HTML压缩器,完全支持Django、Flask和许多其他Python网络框架。它还提供了一款命令行工具,可用于静态网站或部署脚本。
为什么需要压缩HTML代码?
客户端优化的重要一点是对HTML进行压缩。通过压缩HTML代码,您可以减少从服务器传输到客户端的数据量,从而实现更快的加载速度。
安装
要安装django-htmlmin,请在终端运行以下命令:
$ [sudo] pip install django-htmlmin
使用中间件
您只需将两个中间件添加到您的MIDDLEWARE_CLASSES,并启用HTML_MINIFY设置即可
MIDDLEWARE_CLASSES = (
# other middleware classes
'htmlmin.middleware.HtmlMinifyMiddleware',
'htmlmin.middleware.MarkRequestMiddleware',
)
注意,如果您正在使用Django的缓存中间件,MarkRequestMiddleware应在FetchFromCacheMiddleware之后,而HtmlMinifyMiddleware应在UpdateCacheMiddleware之后
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'htmlmin.middleware.HtmlMinifyMiddleware',
# other middleware classes
'django.middleware.cache.FetchFromCacheMiddleware',
'htmlmin.middleware.MarkRequestMiddleware',
)
您可以指定HTML_MINIFY设置
HTML_MINIFY = True
HTML_MINIFY设置的默认值是not DEBUG。只有在启用DEBUG时,您才需要将其设置为True以压缩HTML代码。
排除某些URL
如果您不想对应用程序中的所有视图进行压缩,并且它位于/my_app URL下,您可以通过在settings.py中添加EXCLUDE_FROM_MINIFYING设置来告诉中间件不要压缩视图的响应
EXCLUDE_FROM_MINIFYING = ('^my_app/', '^admin/')
使用正则表达式模式进行URL排除。如果您想排除应用程序中的所有URL,除了特定视图,您可以使用装饰器@minified_response(请查看上面的下一节)。
保留注释
中间件的默认行为是删除所有HTML注释。如果您想保留注释,请将设置KEEP_COMMENTS_ON_MINIFYING设置为True
KEEP_COMMENTS_ON_MINIFYING = True
使用装饰器
django-htmlmin还提供了一个装饰器,您只能将其用于要压缩响应的视图
from htmlmin.decorators import minified_response
@minified_response
def home(request):
return render_to_response('home.html')
避免响应被压缩的装饰器
如果您想避免使用EXCLUDE_FROM_MINIFYING设置来压缩任何特定的响应,可以在视图中使用not_minified_response装饰器。
from htmlmin.decorators import not_minified_response
@not_minified_response
def home(request):
return render_to_response('home.html')
使用html_minify函数
如果您不使用Django,您可以手动调用html_minify函数
from htmlmin.minify import html_minify
html = '<html> <body>Hello world</body> </html>'
minified_html = html_minify(html)
以下是一个使用Flask视图的示例
from flask import Flask
from htmlmin.minify import html_minify
app = Flask(__name__)
@app.route('/')
def home():
rendered_html = render_template('home.html')
return html_minify(rendered_html)
保留注释
默认情况下,html_minify()会删除所有注释。如果您想保留它们,可以传递ignore_comments=False
from htmlmin.minify import html_minify
html = '<html> <body>Hello world<!-- comment to keep --></body> </html>'
minified_html = html_minify(html, ignore_comments=False)
使用命令行工具
如果您甚至不使用Python,您也可以使用命令行工具pyminify来压缩HTML文件
$ pyminify index.html > index_minified.html
如果您想保留注释,也可以
$ pyminify --keep-comments index.html > index_minified_with_comments.html
开发
源代码托管在GitHub
在GitHub Issues上报告问题
欢迎提交拉取请求!请确保您的补丁经过充分测试。
运行测试
如果您使用的是virtualenv,您只需执行以下操作:
$ make test
社区
IRC频道
#cobrateam 频道在 irc.freenode.net
变更日志
您可以在Github releases页面上查看完整的变更日志。
许可证
除非另有说明,否则django-htmlmin源代码文件是在LICENSE文件中找到的BSD风格许可证下分发的。