跳转到主要内容

Python框架的HTML压缩器(尽管名称中包含Django,但不仅限于Django)。

项目描述

https://secure.travis-ci.org/cobrateam/django-htmlmin.png

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

开发

欢迎提交拉取请求!请确保您的补丁经过充分测试。

运行测试

如果您使用的是virtualenv,您只需执行以下操作:

$ make test

社区

IRC频道

#cobrateam 频道在 irc.freenode.net

变更日志

您可以在Github releases页面上查看完整的变更日志。

许可证

除非另有说明,否则django-htmlmin源代码文件是在LICENSE文件中找到的BSD风格许可证下分发的。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪一个,请了解更多关于安装包的信息。

源分布

django-htmlmin-0.11.0.tar.gz (8.0 kB 查看哈希值)

上传时间

支持者