为了提高页面加载速度和适应中国复杂的网络环境,我决定把所有商品图片都分离到专业的云存储服务器上,具有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行,找到下面代码,增加红色部位即可。 /** * 重新获得商品图片与商品相册的地址 * * int $goods_id 商品ID * string $image 原商品相册图片地址 * boolean $thumb 是否为缩略图 * string $call 调用方法(商品图片还是商品相册) * 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; }
有朋友问起,如何写脚本定时同步图片到专用的图片服务器,那我就把自己的方法分享一下
写了个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转载:http://bbs.ecshop.com/thread-1118291-1-1.html