修改ECSHOP,支持圖片雲存儲化(分離到專用圖片服務器)

爲了提升頁面加載速度和適應中國複雜的網絡環境,我決定把全部商品圖片都分離到專業的雲存儲服務器上,具備CDN加速功能。

首先,生成一個域名 img.xxxx.com 並映射到本身的雲存儲別名,而後把所有圖片(含目錄結構)上傳到 雲存儲空間。

在config.php 增長
/* 商品詳情圖片地址替換 */
// 總開關,1啓用雲存儲,0使用本地圖片
$imgserver = 1;
// 匹配圖片前綴,即上傳圖片src的共同部分,在「/」前加「\」
$imgserver_pattern = '\/images\/upload';
// 域名前綴,最後不用加「/」
$imgserver_path = 'http://img.xxxx.com';


goods.php 在170-180行左右中尋找
/* 購買該商品能夠獲得多少錢的紅包 */
        if ($goods['bonus_type_id'] > 0)

加入如下部分:
// 商品詳情圖片地址替換, by layen 明朗
if ($imgserver == 1) {
    $goods['goods_desc'] = preg_replace('/'.$imgserver_pattern.'/i', $imgserver_path.'\0', $goods['goods_desc']);
}

到$smarty->assign('goods', $goods);
這一句代碼以前便可


在/includes/lib_common.php中大約2187行,找到下面代碼,增長紅色部位便可。

/**
* 從新得到商品圖片與商品相冊的地址
*
* @param int $goods_id 商品ID
* @param string $image 原商品相冊圖片地址
* @param boolean $thumb 是否爲縮略圖
* @param string $call 調用方法(商品圖片仍是商品相冊)
* @param boolean $del 是否刪除圖片
*
* @return string   $url
*/
function get_image_path($goods_id, $image='', $thumb=false, $call='goods', $del=false){
    $url = empty($image) ? $GLOBALS['_CFG']['no_picture'] : $image;
  
    if( $GLOBALS['imgserver'] == 1){
        $url = str_replace('images/','http://img.xxxx.com/images/',$url);  // 修改產品主圖路徑,by layen 明朗
    }
   
    return $url;
}
php

 

有朋友問起,如何寫腳本定時同步圖片到專用的圖片服務器,那我就把本身的方法分享一下
寫了個syncimages.lm腳本,由crontab每5分鐘經過lftp執行一遍。內容以下:

open v0.ftp.upyun.com  //我使用的是又拍雲的圖片服務
user "username"  "password"
lcd /home/www/ecshop/images
cd /images             //雲服務器上,我也創建了 images目錄
mirror -R --verbose=3 --only-newer --only-missing --parallel=3  --exclude upload
html

轉載:http://bbs.ecshop.com/thread-1118291-1-1.html服務器

相關文章
相關標籤/搜索