日期:2014-05-17  浏览次数:20715 次

ecshop生成真静态页html方法(转加修改)
ecshop生成真静态页html方法

?

ecshop是一个很不错的网店系统,现在很多公司都在用它,它本身优化也很好,不过因为是网店,很多东西都是动态的,所以,对优化来说,不怎么好,不过庆幸的是它可以伪静态。并且有两种重写方法,在后台商店设置中,可以选择简单重写和复杂重写。
伪静态已经基本上可以满足大部分人的需求,如果不满足的还可以根据前面的一篇文章对重写规则进行修改,以满足自己的需求。
但是本文所要描述的是,根据ECSHOP内在的一些代码,我们生成纯静态的网页,使系统更好的优化。
在这里,我们先对首页进行纯静态生成。

?

ECSHOP是一套很好的PHP开源商城系统,但开源产品总是无法符合各个项目的细节需求。负责人要求每个频道页都静态化,以更好的收录,那我就知道利用dedecms建设一系列的封面模板,然后手动去控制产品的缩略图,至于产品列表页,暂时还没静态化,还在考虑怎么静态化比较好,而商城产品内页静态化则使用以下代码。

Php代码 复制代码
  1. if(file_exists($htmlfile)?&&?(!$updatehtml)){ ??
  2. ????????header("HTTP/1.1?301?Moved?Permanently"); ??
  3. ????????header("Location:?{$htmlfile}"); ??
  4. }else{ ??
  5. ????$htmlcontent?=?$smarty->make_html("goods.dwt",$cache_id); ??
  6. ????if(file_put_contents($htmlfile,$htmlcontent)){ ??
  7. ????????header("HTTP/1.1?301?Moved?Permanently"); ??
  8. ????????header("Location:?{$htmlfile}"); ??
  9. ????} ??
  10. }??
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');//输出静态页面


以上几条简单的语句,我们就可以生成首页的静态网页。同理,我们可以生成产品类别和产品的静态网页,整个系统的静态化就完成了。

首页静态页面生成后,我们接下来要生成的是产品类别的静态页面,我的想法是把产品类别页面保存在跟目录下,这样虽然会比较乱,
但是比较适合优化,因为一般搜索引擎抓取的时候只抓取二到三层。把产品类别放在根目录,体现产品类别的重要性,易