天天看點

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總結