Ecshop 二次开放 个人体会

    xiaoxiao2021-12-02  15

    Ecshop给我感触最深的就是缓存,弯弯绕绕的页面显示dwt,lbi。代码架构不系统,没有采用任何框架(推荐下平常总结公司用的框架:JOEPHP)。感觉就是ecshop整个逻辑有点乱,如果是在它现成的基础修改功能,困难很大,因为要去重新理解它的逻辑实在费劲。但是做二次开发一般都是时间要求快快快,所以完成需求的时候没有那么多时间去考虑怎么写性能更好,怎么写sql查询才会更优化。ecshop二次开发的时候更关注的是客户的需求,但是仔细做,ecshop还是有很多可取之处。下面我总结下我在二次开发从ecshop学到的东西:


    业务逻辑思考能力smarty缓存Ecshop后台分页原理

    一、业务逻辑思考能力

    二次开发ecshop让我感触最深的就是做新的功能需求时先要分析需求,通过实际的开发,就会越加感受到这个逻辑思考能力重要性,当需要做一个功能时,能清晰的理清功能要求和流程,那么在做事有目标的去做,开发效率会事半功倍。 当接到功能需求的时候,第一件事不是动手去做,先要分析需求的具体的要求,需求功能的该注意的地方,弄清楚这个功能是要干嘛?把整个功能的流程列出来,设计出功能的执行流程和使用的技术,可以用文本文档或者画图把流程记录记录下来(这里我推荐一个任务管理工具TODO)。


    二、smarty缓存

    ecshop为什么能有着冗余且没有优化的sql查询还能速度不慢,我想主要原因就是ecshop用了模版缓存技术是主要原因之一。下面介绍下ecshop设置缓存的技巧方法。

    设置smarty缓存需要4个步骤 1.开启缓存 2.设置缓存的生命周期 3.设置缓存目录 4.判断是否有缓存,没有缓存的时候在重新读取数据

    页面缓存:整个页面的全局缓存

    1.开启缓存 在ecshop中是通过define('DEBUG_MODE', 0)来设置debug模式 其中各种模式的涵义: 0 关闭debug 1 显示错误信息 2 关闭缓存 4 显示debug页面 8 记录sql查询

    if ((DEBUG_MODE & 2) != 2) { $smarty->caching = true; }

    ecshop通过判断debug模式来检查是否开启缓存

    2.设置缓存生命周期 ecshop也可以通过设置缓存生命周期时间为0从而关闭缓存

    $smarty->cache_lifetime = $_CFG['cache_time'];

    3.设置缓存目录

    $smarty->cache_dir = ROOT_PATH . 'temp/caches';

    4.判断是否有缓存,没有缓存的时候在重新读取数据

    if (!$smarty->is_cached('模版名', $cache_id)) { // 读取数据并assign赋值 }

    $cache_id就是缓存的ID,根据这个ID找到缓存文件,通过is_cached方法判断页面是否重新缓存页面。 通过这种方式缓存,节省了网页的打开时间,但网页有些地方,不能缓存。比如:会员的登录状态、购物车等,有些数据必须是实时的。

    局部不缓存 在整个页面缓存的基础上,页面有些数据是需要及时更新的,所以这就需要控制局部不缓存。 ecshop里可以找到lib_insert.php文件,所有不能缓存的地方都写在这里了。echsop就是通过insert方法得到php中对应函数的返回值 具体用法为:在模版中的{insert name=’xxx’}的标签可以得到lib_insert.php文件中insert_xxx()函数的返回值。


    三、Ecshop后台分页原理

    后台分页可以分为以下几个步骤: 1.实现查询分页列表方法,里面可以包括分页,查询等 2.实现显示模版页面 3.实现分页页面
    转载请注明原文地址: https://ju.6miu.com/read-679672.html

    最新回复(0)