- 浏览: 609427 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
kangh:
转载的也拿出来 都不试一下 完全错误
Nginx+ffmpeg的HLS开源服务器搭建配置及开发详解 -
wangtxlz:
#cd builders/cmake#cmake .系统提示命 ...
crtmpserver流媒体服务器的介绍与搭建 -
hnraysir:
支持支持支持
手机Android音视频采集与直播推送,实现单兵、移动监控类应用 -
wuent:
把web服务器和php框架绑定到一起?真不建议这样。。。
Swoole(PHP高级Web开发框架) -
wuent:
有更详细的性能比较吗?php,python,java
PHP中的(伪)多线程与多进程
ecshop是一个很不错的网店系统,现在很多公司都在用它,它本身优化也很好,不过因为是网店,很多东西都是动态的,所以,对优化来说,不怎么好,不过庆幸的是它可以伪静态。并且有两种重写方法,在后台的商店设置中,可以选择简单重写和复杂重写。
伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求。
但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化。
在这里,我们先对首页进行纯静态生成。
ECSHOP是一套很好的PHP开源商城系统,但开源产品总是无法符合各个项目的细节需求。负责人要求每个频道页都静态化,以更好的收录,那我就知道利用dedecms建设一系列的封面模板,然后手动去控制产品的缩略图,至于产品列表页,暂时还没静态化,还在考虑怎么静态化比较好,而商城产品内页静态化则使用以下代码。
- if(file_exists($htmlfile) && (!$updatehtml)){
- header("HTTP/1.1 301 Moved Permanently");
- header("Location: {$htmlfile}");
- }else{
- $htmlcontent = $smarty->make_html("goods.dwt",$cache_id);
- if(file_put_contents($htmlfile,$htmlcontent)){
- header("HTTP/1.1 301 Moved Permanently");
- header("Location: {$htmlfile}");
- }
- }
if(file_exists($htmlfile) && (!$updatehtml)){ header("HTTP/1.1 301 Moved Permanently"); header("Location: {$htmlfile}"); }else{ $htmlcontent = $smarty->make_html("goods.dwt",$cache_id); if(file_put_contents($htmlfile,$htmlcontent)){ header("HTTP/1.1 301 Moved Permanently"); header("Location: {$htmlfile}"); } }
301转向是否能够将收录的地址改变,这个经过实验是可以的,大家可以site一下我的商城就知道。其实这个静态化方法,我的灵感也是来源于supersite,这套开源系统也是经过动态跳转到静态化,收录还不差,所以就模仿着写。
1.在首页中,$smarty->display('index.dwt', $cache_id);有这一句,说明是把网页显示出来,现在我们把它改成如下代码(参看注释)
$file = 'index.html';//静态网页文件名
$content = $smarty->make_html('index.dwt');//根据index.dwt模板生成网页内容
$filename = ROOT_PATH . $file;//静态网页路径
file_put_contents($filename, $content);//生成文件
echo $content;//输出到页面
这几句放在if (!$smarty->is_cached('index.dwt', $cache_id))判断中 这样可以利用原有的判断来决定是不是重新生成静态页面(不过测试了下是一直重新生成的 这个问题有待继续研究)
//在判断外加上
//echo file_get_contents(ROOT_PATH . 'index.html');//输出静态页面
以上几条简单的语句,我们就可以生成首页的静态网页。同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了。
首页静态页面生成后,我们接下来要生成的是产品类别的静态页面,我的想法是把产品类别页面保存在跟目录下,这样虽然会比较乱,
但是比较适合优化,因为一般搜索引擎抓取的时候只抓取二到三层。把产品类别放在根目录,体现产品类别的重要性,易于搜索引擎的
抓取,另外一方面,我们可以把产品放在下个目录中。
类似代码:
$filename = build_uri('category', array('cid' => $catinfo['cat_id']));//构造路径,这个可以选择自己喜欢的构造方法
$content = $GLOBALS['smarty']->make_html('category.dwt');//产生静态页面内容
$filename = ROOT_PATH . $filename;//生成文件路径,在根目录下
file_put_contents($filename, $content);//输出
产品的静态页面代码:
$goodinfo = get_all_goodsinfo($goods_id);
$cat_name = $goodinfo['cat_name'];
$goodsfile = build_uri('goods', array('gid' => $goods_id));
$content = $GLOBALS['smarty']->make_html('goods.dwt');
$html_tempdir = (ROOT_PATH.$cat_name.'/');
if (!is_dir($html_tempdir))//生成产品目录
{
mkdir($html_tempdir);
}
$htmlfilename = ROOT_PATH . $goodsfile;
file_put_contents($htmlfilename,$content);
我的是使用类别名称加下划线:
function build_uri(........)
................
case 'category':
$cat_name = $GLOBALS['db']->getOne('SELECT cat_name FROM ' . $GLOBALS['ecs']->table('category') . " WHERE cat_id = '$cid'");
$uri = $cat_name . '-' . $cid;
if (!empty($page))
{
$uri .= '-' . $page;
}
........
case 'goods':
$goods_info = $GLOBALS['db']->getRow('SELECT g.goods_name, c.cat_name FROM ' . $GLOBALS['ecs']->table('goods') . " as g left join " .
$GLOBALS['ecs']->table('category') . " as c on c.cat_id = g.cat_id WHERE g.goods_id = '$gid'");
$goods_name = $goods_info['goods_name'];
$cat_name = $cat_name;
$uri = $cat_name . '/' . $goods_name . '-' . $gid ;
..........................
有人问 make_html 这个函数在那里: 我现在补充如下:
在 includes 下的 cls_template.php 加上
function make_html($filename, $cache_id = '')
{
ob_start();
$this->display($filename,$cache_id);
$out = ob_get_contents();
ob_end_clean();
return $out;
}
发表评论
-
nginx、php-fpm默认配置与性能–TCP socket还是unix domain socket
2015-04-02 11:14 1472前几天看到一篇博客,提到php所在服务器在大并发情况下,频 ... -
使用socket方式连接Nginx优化php-fpm性能
2015-04-01 13:49 0Nginx连接fastcgi的方式有 ... -
PHP中include和require的区别详解
2015-04-01 08:32 01、概要 require()语句的性能与includ ... -
PHP 中cookie 和 session 的分析
2015-03-31 12:33 0HP 中cookie 和session 的分析 ... -
php 经典的算法题你懂的
2015-03-31 12:31 0有5个人偷了一堆苹果,准备在第二天分赃。晚上,有一人遛出来, ... -
PHP最常用的2种设计模式工厂模式和单例模式介绍
2015-03-31 12:26 0简单来说,PHP单例模式就是一个功能用一个类来实现,并且在整 ... -
PHP 数据类型
2015-03-31 12:23 0PHP 数据类型 PHP 支持八种原始类型(type)。 ... -
PHP mcrypt启用、加密以及解密过程详解
2015-03-30 11:32 1461Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密, ... -
PHP扩展实现类扩展
2015-03-27 14:08 577在第一篇文章中,我们所开发的扩展是单个函数,本篇文章看一下 ... -
PHP高级工程师的面试题
2015-03-06 10:35 01. 基本知识点 HTTP协议中几个状态码的含义:1x ... -
PHP面试中常见的面试试题与算法例子
2015-03-05 14:14 0下面是四道比较常见的题目,主要考察的是对字符串函数以及文件操 ... -
PHP实现四种常用的排序算法
2015-03-05 14:09 0插入排序(Insertion Sort),选择排序(Sele ... -
用swagger-php/ui做API测试
2015-02-13 09:46 3650功能: 1 swagger-php根据自定义的规则生成API ... -
app后端设计(0)--总目录
2015-01-23 18:03 0做了3年app相关的系统架构,api设计,先后在3个创业公司中 ... -
PHP中eAccelerator、memcached、xcache、APC 4个加速、缓存扩展的区别
2015-01-23 10:26 915这篇文章主要介绍了PHP ... -
PHP内核探索:zend_parse_parameters函数
2015-01-16 14:14 967最简单的获取函数调用者传递过来的参数便是使用zend_pars ... -
实战:用C写php扩展(二)
2015-01-16 11:05 998一、前言 在我的上一篇文章“实战:用C写php扩展(一)”里介 ... -
实战:用C写php扩展(一)
2015-01-16 11:04 10181、 前言 首先,确保你的机器安装了apache和php。假 ... -
JavaScript or PHP 来检测移动设备
2014-09-22 10:04 631iPhone & iPod Detection T ... -
YII Framework学习教程-YII的Modules(模块化)
2014-08-27 11:04 752一个相对来说大的项目。如果按照yii生成的 ...
相关推荐
插件安装后,在ECSHOP后台右上角会新增一个“生成静态首页”的选项。具体操作流程如下: 1. 登录ECSHOP后台管理系统。 2. 在顶部菜单栏找到并点击“生成静态首页”按钮。 3. 系统会自动执行静态页面生成任务,并在...
总结来说,ECSHOP 2.7.2完全静态化方案V1.1是一个针对大流量电商网站的性能优化方法,通过生成和使用静态HTML文件,提升了系统响应速度和用户体验,同时降低了服务器压力。而upload_modify文件则可能是实现这一方案...
2. 自动生成静态页:ECSHOP可以通过配置,在用户访问页面时自动转换为静态页面。例如,当有新的商品上架或更新时,系统自动生成或更新对应的静态页面。 3. 定时任务生成:通过设置定时任务,定期检查并生成或更新...
10.前后台验证码背景修改:需要修改验证码生成的相关图片处理代码,以改变验证码的背景样式。 11.搜索页Title文字修改:涉及搜索引擎优化(SEO)的元素调整,通过修改模板中的HTML标签来改变页面标题。 12.后台...
9.全站生成HTML静态网页(付费版才有)。 炮哥ecshop特产商城前台页面: 炮哥ecshop特产商城后台管理 后台路径:域名/admin/index.php 用户名密码:安装时可设置,或默认账户:admin 密码:admin888 后台页面...
ECShop是一款知名的开源电商系统,特别适用于中小企业构建在线购物平台。在这个"ecshop2.7.3 PHP5.5修改版"中,我们看到它针对PHP5.5环境进行了优化和调整,确保在PHP5.5及更高版本的服务器上稳定运行。这表明开发者...
ECSHOP的模板引擎允许开发者轻松修改页面布局和样式,通过修改HTML模板文件即可实现前端展示的个性化。同时,模板引擎支持变量替换和条件判断,方便动态内容的生成。 三、数据库操作 ECSHOP使用ADOdb数据库访问层,...
ECSHOP是一款知名的开源电子商务系统,主要用于搭建B2C类型的在线购物平台。"ecshop仿京东JD 2013最新版完整版"意味着这个版本的ECSHOP是根据2013年京东(JD)的界面设计和功能进行模仿的,旨在提供与京东相似的用户...
3. **模板引擎**:ECshop使用了一种简单的模板引擎技术,将页面的静态内容与动态数据分离。这样做的好处是可以让前端设计师和后端开发者独立工作,提高了开发效率。同时,这也意味着可以在不改动后端代码的情况下...
在ECSHOP的上下文中,这个目录很可能包含了整个商城系统的前端静态资源(如HTML、CSS、JavaScript文件)、模板文件、图片以及与ECSHOP后台交互的PHP脚本。开发者可以通过修改这些文件来调整商城的外观和功能,以满足...
例如,首页标题应展示商店名称,频道页面显示频道名加商店名称,商品页面显示商品名加商店名称。这可以通过修改`goods.dwt`模板文件中的`{$page_title}`实现。 - 在`lib_main.php`中,通过判断页面类型来动态设置...
10. `temp`:临时文件夹,用于缓存和生成静态页面。 11. `theme`:主题模板文件夹,决定前端展示样式。 12. `wap`:移动设备适配,支持手机或平板浏览。 13. `widget`:小部件或组件,可复用的前端模块。 ECShop的...
学习 EcShop 的订单生成、确认、支付、发货等流程,以及如何处理各种支付方式,如货到付款、在线支付等,是电商开发的重要部分。 10. **用户管理与权限控制** EcShop 提供用户注册、登录、评论、收藏等功能,...
### ecshop文件结构详解 #### 引言 ECShop是一款基于PHP和MySQL的开源电子商务系统,广泛应用于在线购物网站的建设。其强大的功能和灵活的配置使其成为许多开发者和商家的首选。本文将深入解析ECShop的文件结构,...
4. **订单处理**:ECShop有完善的订单流程,包括订单生成、支付处理、发货、退款等。它支持多种支付接口,如支付宝、微信支付等,方便商家和消费者进行交易。 5. **会员系统**:用户可以注册、登录、收藏商品、评价...
ECMobile_Universal-master.zip 是一个压缩包,其中包含有关ECMobile_ECMobile_Universal_ecshop的相关资源和代码,这是针对电商平台ECShop的移动应用版本。ECShop是一款流行的开源电子商务系统,而ECMobile则为其...
- **静态页面生成**:生成静态商品详情页,提高爬虫抓取效率。 - **URL重写**:支持友好的URL格式,便于用户记忆和分享。 ##### 5. 内置手机短信网关 - **定义**:ECShop内置手机短信网关,方便实现验证码发送等...
可以任意更改视频空间名称、修改个人头像以及资料。 增加FLASH头像功能,方便用户任意裁剪喜欢的头像。 根据网站人气,定时更新网站热门TAG,方便用户了解站内热门视频。 用户有自己的视频空间,展示我的视频...
7. **购物车逻辑**:实现商品添加、删除、数量修改,以及计算总价和优惠策略。 8. **订单处理**:管理订单状态,如待付款、已发货、已完成等,以及退款退货流程。 9. **物流和库存管理**:跟踪库存,处理订单时...