smarty局部缓存
来源:互联网 发布:redis java 使用 编辑:程序博客网 时间:2024/05/13 02:58
使用smarty设计网站前台时,使用混存可以大大减轻程序与服务器的交互,提高速度。对于那种访问比较多的站点尤为重要。
使用的过程中发现,如果全局缓存了,其实就等于整站静态化,那到不如就直接静态化算了,还免得第一次访问出现错误生成错误的缓存或者其它的状况出现。
整站缓存后空间是个问题,一个html随时可能达到10~30k。随着信息的增加,有些草根站长明显吃不消啦,空间就是金钱啊。
部分缓存可以解决这个问题,可以将共同的部分缓存了,将变化的部分不设置缓存,那不就行了吗?对于一部分来说,这是节省空间的好办法,而且速度也有一定提高。
但是变化部分一般是需要访问数据库的,这样缓存就省空间但不能最有效减轻服务器负担。所以情况并不能全部适用。我在本站处理时,对这部分信息进行缓存(XML/YAML),能有效保存信息,而且不会产生过多的HTML代码,到时候直接读文件缓存就OK了。如果你怀疑读文件和数据库的速度,那请测试一下。
下面例子是从网上抄写的,网上很多类似的转载,明显有错误就是没有进行is_cache()判断,那不就php脚本还是全部跑一遍,就是不需要渲染到html罢了。效率不能极大利用。自己可以进行改进一下。
局部缓存示例:
smarty_config.php
<?php
include_once(WEB_ROOT."/libs/Smarty.class.php"); //包含smarty类文件
$smarty = new Smarty(); //建立smarty实例对象$smarty
$smarty->template_dir=WEB_ROOT; //设置模板目录
$smarty->compile_dir =WEB_ROOT."/templates_c"; //设置编译目录
$smarty->cache_dir =WEB_ROOT."/cache"; //设置缓存目录
$smarty->cache_lifetime = 60*60; //设置缓存时间(s)
$smarty->caching = true; //设置缓存方式
//----------------------------------------------------
//左右边界符,默认为{},但实际应用当中容易与JavaScript
//相冲突,所以建议设成<{}>或其它。
//----------------------------------------------------
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";
?>
test.php
<?php
include('inc/inc_init.php');
include('inc/smarty_config.php');
function smarty_block_dynamic($param, $content, &$smarty)
{
return $content;
}
$smarty->register_block('dynamic', 'smarty_block_dynamic', false);
$smarty->assign("nowTime",date("Y-m-d H:i:s"));
$smarty -> assign('randnum',rand());
$smarty ->display('test.html');
?>
test.html
<div align='center'>
Page created: <{"0"|date_format:"%D %H:%M:%S"}>
<{dynamic}>
Now is: <{"0"|date_format:"%D %H:%M:%S"}>
... do other stuff ...
<{$nowTime}>
<{$randnum}>
<{/dynamic}>
<br /><{$nowTime}>
</div>
- smarty页面局部缓存
- smarty局部缓存
- smarty局部缓存技术
- smarty 实现局部缓存
- smarty局部缓存
- SMARTY局部缓存
- smarty局部缓存
- smarty局部缓存
- Smarty局部缓存
- smarty局部缓存
- smarty局部缓存
- smarty局部缓存
- smarty局部不缓存
- smarty局部缓存
- smarty 局部不缓存
- smarty的局部缓存
- smarty-缓存(局部不缓存)
- Smarty之缓存,局部缓存
- ffmpeg/ffplay vc6 源码剖析||Win7下SDL环境搭建---用于ffplay
- 博客美化
- Java面试题(一)
- java两个数进行交换
- linux虚拟机运行automake 命令出现(error while making link)的错误及解决
- smarty局部缓存
- vmware下Ubuntu的文字界面图图形界面切换方法
- VMware Workstation 8.0.1 简体中文版(汉化包)下载
- 13.1.4 创建基元工作流
- HDOJ 1443 Joseph again
- ATL编程初级教程
- MySQL中的各种JOIN(CROSS JOIN, INNER JOIN, LEFT [OUTER]
- 最短小精悍的Delphi小写数字转大写的函数
- class类怎样获取引入文件中的变量