天天看点

Ecshop 二次开放 个人体会

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

  1. 业务逻辑思考能力
  2. smarty缓存
  3. 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)
{
    $smarty->caching = true;
}
           

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

2.设置缓存生命周期

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

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.实现分页页面
           
下一篇: 2016总结