Mustache php 版开源项目 流程 性能分析 以及优化

Mustache 项目 :https://github.com/bobthecow/mustache.php

Mustache  是一个功能强大的 Template 模板组件。用来分离前端静态页的设计和后台数据的填充。

mustache php 源码分析:

如图:

调用使用:

 


项目基本结构如图,

Mustache_Autoloader : 通过调用其register 函数,注册相关环境。

 

Mustache_Engine   :  项目主体,通过其render 函数对模板进行翻译。

 

Mustache_Loader:   模板加载类,通过该类,加载模板字符串或模板文件 (通过继承获得)

 

Musache_ Template: 模板公共父类,所有的模板(文件、字符串)都会在最后生成不同的Template子类,里面方法有 renderInternal()和select(),用来翻译成为正式html 页面。

 

Mustache_Cache :  生成的Template子类,都需要缓存到Cache内,可以选择缓存的的方式(文件/内存)(通过继承)

 

Mustache_Context : 对象上下文类,内建一个array()用来保存 显示在模板的数据。

 

 2、流程图



下面是项目的数据流图




1  Mustahce 为每一个html模板都生成了一个对应的Template模板类,,主要函数有renderInternal()、select(),负责对模板的解释说明。

2  Mustahce 会对生成的Template 模板进行缓存,防止下次调用相同html文件需要重新生成,浪费时间。

3  项目的大部分时间都在 renderInternal () Select() findVariableInStack()内进行执行,不断地进行字符串的拼接。

4   对每个转换都会调用findVariableInStack()返回结果

 

Mustache性能分析:

1  如上图黄色区域所示项目的大部分时间都在 renderInternal () Select() findVariableInStack()内进行执行,不断地进行字符串的拼接。

2  又因为mustache支持多种方式的变量(可以是函数,数组,字符串)。在findVariableInStack函数内部需要不断地进行类型判断。

3、 每个html模板 最后都会生成对应的 一个php Template 类, 拼接字符串。

Mustache 性能调优

  1  去除 mustache支持多种方式的变量(可以是函数,数组,字符串),让其仅支持一种。

  2  不使用 {{#{{#}}}} 嵌套方式,尽量减少需要遍历的数据量

  3  减少每个html 模板产生 对应的Template 的类 的数据量,减少拼接。对不变的数据,进行缓存优化。 如图:





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值