优化ecmall2-速度(2)--缓存模板--更新(缓存首页)
2016-07-07 16:49 来源:www.chinab4c.com 作者:ecshop专家
缓存模板--总感觉ecmall2有时慢的进 本来是打算全站静态的,但是考虑到商城的特殊原因,并不需要把某一篇文件放在那里很久。所以转而缓存模板文件,以达到加快ecmall2速度的目的。 这篇比上一篇更加实用,因为如果是缓存模板文件的话,那就算不使用内存来缓存从数据库读取的数据也没关系,因为最后会把模板文件连同数据一起缓存进一个文件,那后面读取时就只读取这个文件而不用再去缓存数据库,但与静态化有点不同,这个文件里面还有一点php信息,并不能用来直接输出,模板引擎会在去掉这点php信息后输出。 我在使用ecmall2时也觉得有时反应不过来,相比来讲ecshop还快,经过观察,其实ecshop在display时是加了一个id的,就是用来缓存这次输出的。而我们现在要做的就是在ecmall2里面实现缓存模板输出,通俗点讲就是在$this->display()时给一个id这个id要唯一。 其实所有的东西ecmall2已经准备好了,只是不知道为什么没有使用,详细的原理不再介绍修改完后就可以使你的商城在运行方面的速度上一层楼,但是网络方面可不包哦。 我们以商品详细页为例 1、修改app/goods.app.php的index方法的最后一行成这样{$this->display('goods.index.html','goods_detail_'.$id);}(不包括大括号,以下不再提示)。 2、app/frontend.base.php文件里面的class StorebaseApp extends FrontendApp类的function _config_view()方法里的最后添加如下代码{$this->_view->cache_dir= ROOT_PATH . "/temp/html_cache/store/{$template_name}";}这里设置缓存的目录。 3、再找到app/frontend.base.php的class FrontendApp extends ECBaseApp类的function display($tpl)方法的方法名改成这样{function display($tpl,$cache_id="")}接着把方法里面的parent::display($tpl);改成{parent::display($tpl,$cache_id);}。 4、找到includes/ecapp.base.php里的function display($f)方法的方法名改成{function display($f,$cache_id="")},以及里面的parent::display($f);改成{parent::display($f,$cache_id);}。 5、eccore/controller/app.base.php里面的function display($n)方法改成{function display($n,$cache_id='')},以及里面的$this->_view->display($n);改{$this->_view->display($n,$cache_id);}。 再修改eccore/view/template.php的function fetch($filename, $cache_id = '')方法如下。
其实用这个方法,你甚至可以给商城的商品分类、店铺的商品分类都缓存起来,条件是你要给$this->display()方法一个能确定唯一的id。 现在的问题: 这些修改后好像是不会在固定时间后自动更新的缓存的,你可以去temp/html_cache/下面删除所有的东西,就会重新生成缓存了。 另外,我会继续研究,会有一个比较完善的生成静态的方案,但是应该是收费的(如果有资源的朋友可以过来互换啊,或者能成为核心交流人员的可以免费提供),但基本都是基于这些代码了。 下一个目标,还没有发现,如果你发现了需要优化的地方,请告诉我,前提是这个改进对大家都有用的。 欢迎传播,愿结交更多朋友。 |
回答:
顶~~支持!! |
找时间在看~ |
顶你没商量!!! |
朋友的朋友说首页加载有点慢,也确实,首页是最常被访问的,应该缓存这个页面,如果你按照上面的做了,现在只要改两处就可以了。 重复上面第二步但有点不同。 app/frontend.base.php文件里面的class MallbaseApp extends FrontendApp类的function _config_view()方法里的最后添加如下代码{$this->_view->cache_dir= ROOT_PATH . "/temp/html_cache/mall/{$template_name}";}这里设置缓存的目录。 然后就是打开app/default.app.php,修改$this->display('index.html','mall_default_page');成这样即可缓存,因为首页并不接受参数,所以这个id就是唯一的。 ok,完工。 |
顶起呀,火火的... |
强烈支持~~~太感谢了~ |
不错,等LZ的好消息 管方也要关注一下,不然都要跑到shopcn去了 |
最近更新
常用插件
- ecshop使用手机验证码登陆
ecshop使用手机验证码登陆,这个功能很新颖,有些特殊的ecshop站点,他到...
- ecshop 手机注册验证插件
ecshop 手机注册验证插件 ,需要通过手机获短信,然后注册验证 价格:...
- ecshop根据订单批量发红包
ecshop根据订单批量发红包 ,大家肯定对ecshop红包不陌生,但是对ecshop订...
- ecshop中nginx实现url的重写
上几章为了让ecshop很好的在nginx上运行。我们搭配了ecshop的nginx下的工作...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
ecshop热门问答
ecshop热门资料
ecshop网站空间
ecshop天津
ecshop乱麻
ecshopunderstand
ecshop小图
ecshop所有品牌
ecshop双色球
ecshop碎片
ecshop求助
ecshop下装
ecshop评论添加问题
ecshop留言列表
ecshopalibab
ecshop模糊
ecshopUnable
ecshop安装错误
ecshopexpect
ecshop大钱
ecshop三栏
易用性SEO
ecshoproot
ecshop淘宝商家
ecshopornaments
ecshop静态缓存
ecshop电子
ecshop有没有人
ecshop淘宝知识
ecshop回答
ecshop金钱
ecshop放歌