仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1198|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页设计手把手教你Smarty缓存手艺

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:32:31 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在学习PHP这六个月里,每看到一个优秀的php脚本,就会兴奋的手舞足蹈,嘴里还不停的说:太酷了,太酷了。呵呵,很幼稚吧,但这可能就是兴趣。      人人应当晓得缓存机制能能无效的加重网站的办事器压力,Smarty模板引擎的一大亮点就是为咱们供应了十分复杂的缓存操作,上面就让咱们进修一下。
    起首咱们要晓得Smarty缓存机制分为全局缓存,局部缓存,部分缓存三种,咱们逐一引见。
    1、全局缓存
    望文生义,全局缓存就是为全部网站的全体页面都生成缓存页面。
    起首咱们要操作smarty的设置装备摆设文件,开启缓存,指定缓存文件目次,并设置缓存的存活工夫
    $smarty->cache_dir = ‘./cache/’; //设置寄存缓存文件的文件夹
    $smarty->caching = 1;//开启缓存 0、FALSE代表封闭非0数字、TRUE代表开启
    $smarty->cache_lifetime = 3600//单元为秒(假如填写-1为永不外期)
    接上去咱们要去详细的php页面设置与之对应的详细缓存文件的名字
    $url=md5($_SERVER['REQUEST_URI']);//将以后页面的URL(包括?前面的一切参数)停止md5加密
    $smarty->display(‘list2.html’,$url);//设置缓存文件名
    需求注重的是:
    $smarty->display(‘与之对应的模板文件名’,'缓存文件名的增补局部’)这个办法。
    第二个参数不是必需的,假如不写的话,缓存文件名就是讲过加密处置的模板文件名。
    然而如许会碰着一个对照辣手的成绩:
    http://localhost/1.10/sm/list2.php?lan=1
    http://localhost/1.10/sm/list2.php?lan=2
    http://localhost/1.10/sm/list2.php?lan=3
    3个URL对应应当的分歧的内容,然而生成的缓存文件名都是list2.html加密后的了局。
    这就会招致用户想要查询的是分歧的内容,会见的倒是统一个缓存文件。
    所以建议加上一个帮助参数,将会见url(包括?前面的一切参数)md5加密是作者对照保举的一种。
    2、局部缓存
    起首懂得甚么叫局部缓存,其实就是指定一些文件生成缓存文件,而非网站的全体文件。
    懂得了需求到达的后果,接上去咱们就来详细操作
    操作之前,咱们先要强调一个概念:
    局部缓存的本色实际上是局部不缓存,也就是说不是指定那些文件生成缓存,而是指定详细一些文件不生成缓存
    假定有3个文件:
    1.php //需求缓存
    2.php //需求缓存
    3.php //不需求缓存
    在1.php/2.php文件中仍是还是写上$smarty->display(‘与之对应的模板文件名’,’缓存文件名的增补局部’)这个办法。
    但在3.php中咱们要出格指明不需求生成缓存,详细的办法是:
    $smarty->clear_cache(‘与之对应的模板文件名’)//写在$smarty->display(‘与之对应的模板文件名’)之前仍是以后都可以
    固然$smarty->display(‘与之对应的模板文件名’)仍是要写,原本就不想生成缓存,第二个参数也就不需求了。
    $smarty->clear_cache()和$smarty->display()的参数必定要写成分歧的
    3、部分缓存
    起首让咱们懂得下部分缓存的意思,就是指定统一页面下的某些部分中央生成缓存。
    一样的在这里咱们也要把思绪反转一下。
    其实不是指定哪些部分生成缓存,而是哪些部分不生成缓存(这和局部缓存的操作思惟是相似的)。
    话不多说,先举一个实例
    1.php
    $time=time();
    $smarty->assign(‘time’,$lanmuarr);
    function insert_timeget()
    {
    return time();
    }
    $smarty->display(’1.html’);
    
    1.html
    {$time}
    //开启缓存后,反复刷新这个不会变
    {insert name=’timeget’}
    //开启缓存后,反复刷新这个会变
    看懂了这个例子咱们来注释下个中的道理
    在PHP中咱们只需界说了
    函数名为insert_自界说增补名的自界说函数,在个中前往的值,不需求assign()办法传递,就可以直接在模板页面中以{insert name=’自界说增补名’}的体例挪用,同时不会遭到缓存的影响,而及时刷新
    好了到这里咱们关于smarty的3中缓存体例就全体解说完了,有乐趣的伴侣可以本人实验下分歧的后果。
那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?
若相依 该用户已被删除
沙发
 楼主| 发表于 2015-4-17 17:36:07 | 显示全部楼层
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-14 18:57

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表