跳转到主要内容

Django的字节码编译模板加载器

项目描述

一个将Django模板编译成Python字节码以提高性能的模板加载器。

https://api.travis-ci.org/mhallin/django-compiling-loader.svg?branch=master https://coveralls.io/repos/mhallin/django-compiling-loader/badge.svg?branch=master&service=github

此包公开了 compiling_loader.Loader 模板加载器。此加载器会将Django生成的模板语法树编译成Python字节码。如果一个标签无法生成,将编译一个回退,该回退仅评估模板节点。回退方法意味着即使您有很多自定义标签,此加载器也与现有加载器兼容。

编译器是模块化的,并且围绕Python 3.4的 singledispatch 函数构建,这意味着它可以很容易地扩展以支持您自己的标签,如果您有昂贵的自定义标签且从编译中受益。

加载器本身不进行任何缓存;它与Django内置的缓存加载器一起工作,以避免重新编译。

用法

安装 django-compiling-loader Python包,并将 TEMPLATE_LOADERS 设置为以下值

TEMPLATE_LOADERS = (
    ('django.template.loaders.cached.Loader', [
        ('compiling_loader.Loader', [
            'django.template.loaders.filesystem.Loader',
            'django.template.loaders.app_directories.Loader',
        ]),
    ]),
)

如果您有其他加载器,请将它们放在 compiling_loader.Loader 列表中,以确保生成的模板被编译。

兼容性

此加载器已与Django 1.7进行过测试,并需要Python 3.4。在渲染兼容性方面,该项目包含大量测试用例,比较了标准Django模板评估和此编译器的渲染输出。到目前为止,尚未发现任何不兼容性。

性能

脚本 test_proj/run_benchmarks.py 将一个小型基于继承的模板渲染多次,同时将一个大型同时基于继承和包含的模板渲染几次。以下是一些比较。

模板

默认

编译

加速

0.21 毫秒

0.10 毫秒

2,1 倍

125 毫秒

42 毫秒

3,0 倍

项目详情


下载文件

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

源代码分布

django-compiling-loader-0.0.1.tar.gz (10.8 kB 查看哈希值)

上传时间 源代码

构建分布

django_compiling_loader-0.0.1-py3-none-any.whl (16.5 kB 查看哈希值)

上传时间 Python 3

由以下支持