ECSHOP完全静态化解决方法

一、静态化原因

Ecshop提供的伪静态化方案,利用URL重写,将html映射到php上,只是一种SEO优化方法,最终执行的还是php,并不能提高系统的性能。


二、静态化思路

1、
仍然利用URL重写,将html映射到php上。但在每次访问时,都先通过apache url rewrite规则判断静态页面是否存在,如果不存在,则访问php,并生成相应的html页面;如果存在,则直接访问静态页面。

2、
如果php文件或者页面内容作了修改,则只需要删除静态页面即可,在用户下次访问时,即可自动重新生成静态页面。

3、
对于页面中动态更新的部分需要进行单独处理,比如用户登录的状态、浏览历史、购物车信息等。在此方案中,采用了javascript动态调用方法,对部分程序进行了修改。

4、
主要针对首页、频道页、产品分类页、产品页、文章列表页、文章页等页面进行静态化。对于完全动态的页面,比如用户中心、搜索结果页面,则不做静态化处理。


三、此方案的优缺点

优点:

1、实现了真正的静态化;

2、通过用户首次访问生成静态页面,不需要后台去统一生成;

3、网页内容更新后,系统会根据操作记录去删除已经更新的静态页面。操作记录使用mysql触发器来实现,用户可以根据需要自己修改。

4、如果用户修改了网站结构,可以选择删除全部静态页面。当用户访问时,即可重新生成。


缺点:

1、方案只是针对ecshop的默认模板页进行静态化处理,如果用户用的不是默认模板页,则可以参照以下的修改方法,自己去修改。

2、此方案比较复杂,用户需要懂得一些apache脚本、sql语言和php编程方面知识。


四、静态化方案详解

此次静态化修改的Ecshop版本为v2.7.2 UTF8 RELEASE 20100604,增加或者修改的文件见下载附件。

(一)、URL重写脚本

如果使用htaccess方式,见《htaccess.txt》;如果是通过 httpd.conf 来设置重写规则,见《httpd.txt》文件。


(二)、mysql脚本

见《static.sql》文件,用于记录页面内容的更新操作(包括增删改),系统再根据这些操作记录去删除相应的静态页面。新增了表yak_delstatic_log和yak_delstatic_check。其中yak_delstatic_log用于保存数据的修改记录,表yak_delstatic_check用于保存活动起止的检查记录。


(三)、修改或者增加的文件说明

见《版本历史.doc》文件。


五、静态化操作步骤

1、首先需要确认Ecshop版本为v2.7.2 UTF8 RELEASE 20100604,模板为默认模板。如果版本或者模板不一致,则需要参考这个方案自己修改。

2、在根目录下新建html文件目录,并确认可以写入。

3、确认data目录可以写入。当执行删除已更新的静态页面操作时需要在data目录下保存数据。

4、运行static.sql脚本。首先打开static.sql,将ecs前缀改成和当前的一致,然后将static.sql上传到服务器上,在mysql的终端模式下,执行命令:use <database名称>;source <路径>/static.sql;。注意,在phpmyadmin下执行没有测试过,可能会报错。

5、用下载的php文件覆盖当前的文件,覆盖前请先做好备份。

6、开启后台的URL简单重写功能,并修改URL重写规则。重写规则分别有htaccess和httpd.conf两种方式。如果使用htaccess方式,请将httpd.conf中的AllowOverride设置为All。如果修改了httpd.conf需要重启apache。

7、打开管理后台的计划任务,安装“删除静态页面”的计划任务,并开启。可将计划任务执行时间设置为10分钟,这样每隔10分钟系统就会自动检查更新的记录,删除内容已经更新的页面。也可以在每次修改了后台数据后,点击后台右上角的“删除更新静态”,立刻执行检查修改。

 

点此下载

你可能感兴趣的:(apache,sql,PHP,mysql,脚本)