php—Smarty-缓存1(25)
一、 缓存原理:
IE:将资源文件保存至本地
Smarty:将缓存保存到服务器
编译 < 缓存 < 静态
二、 为什么使用缓存技术
1、提升网站访问速度
2、减轻web服务器压力
3、减轻数据库服务器压力
三、 设置缓存
1、在smarty中,设置缓存主要通过以下几行代码:
l $smarty->setCacheDir($cache_dir)
设置缓存目录
将来生成的缓存文件会自动放在这个目录下
l $smarty->caching=true
开启缓存机制
只要使用想缓存技术,必须在display方法调用之前开启缓存机制,(清除缓存不要开启)
l $smarty->cach_lifetime=3600
设置缓存有效时间(生命周期),
默认是3600秒(一小时),可以做适当调整
2、代码部分:
程序代码:

模板代码:

运行以上程序之后,我们发现在当前目录下,自动产生两个文件夹:

其中templates_c和cache分别表示编译和缓存目录,并且它们是自动创建的
但是强烈建议大家,不要过度依赖自动创建功能,因为在有些操作系统中,默认没有创建权限,所以建议我们在运行之前手动创建这两个目录
3、观察这两个文件区别:
编译文件:

缓存文件:

通过观察,我们发现,在编译文件中,关于模板变量的值是每次通过PHP程序动态读取的
在缓存文件中,这两个变量的值是直接写到文件中的
4、缓存是指针对模板的缓存
我们可以尝试创建其它php程序,让这些程序再次显示上面这个模板,发现这些程序只会直接运行以上程序产生的缓存文件
5、Smarty缓存工作原理:

6、两个相关的属性
$smarty->compile_check
默认值为true,表示每次执行时,都会检查模板是否改变,如果改变,则重新读取,再生成编译和缓存文件。但是,一个项目上线之后,模板基本上是不会有改动的或不经常动的,每次都判断会影响系统性能,所以在项目上线之后,建议大家关闭此选项(设置为false)。
$smarty->force_compile
默认值是false,表示每次执行时,都会检查缓存是否过期,如果没有过期,则直接使用缓存文件的内容。但是,一个项目开发时,缓存会影响程序员对程序最直接的判断,会影响观察最新的数据。建议大家将此选项设置为true,表示每次运行时都重新生成编译和缓存文件。
四、检查缓存
$smarty->isCached(“tpl.tpl”)
检查某个模板是否具有缓存文件

实际应用:

五、 清除缓存
比如说,在一个商城系统里,这件商品价格是1000.00,现在商城打折,打七折。如果使用缓存,但商品价格仍然是原来的价格。这时需要我们将以前的缓存文件删除即可。
l $smarty->clearCache(“tpl.tpl”)
清除某个模板的缓存文件
l $smarty->clearAllCache()
清除所有模板的缓存文件

一个商品信息的改变了,需要重新生成该商品的缓存文件
一般情况下,修改数据,是需要重新生成缓存文件(要把原来的缓存文件删除).
php—Smarty-缓存1(25)的更多相关文章
- Smarty缓存技术总结
大家应该都知道合理使用缓存能有效的减轻网站的服务器压力,php Smarty作为一个非常优秀的php模板引擎,它为我们提供了非常简单而多样化的缓存操作,下面就让我们学习一下smarty缓存操作方面的一 ...
- 全面剖析Smarty缓存机制一[三种缓存方式]
今天主要全面总结下Smarty模板引擎中强大的缓存机制,缓存机制有效减少了系统对服务器的压力,而这也是很多开发者喜欢Smarty的原因之一,由于篇幅较大,便于博友阅读,这篇文章将剖析Smarty缓存的 ...
- 全面剖析Smarty缓存机制二[清除缓存方法]
前段时间,写了一篇 Smaryt缓存机制的几种缓存方式 ,详细介绍了三种缓存方式:全局缓存.部分缓存.局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成.本来这篇早该完成,由于时间关 ...
- php smarty 缓存和配置文件的基本使用方法
smarty高级部分包括缓存机制和配置文件的调用 下面是代码实现: 文件一,配置文件: #全局变量 title="网站主页" content="一个网站的主体部分&quo ...
- smarty缓存的使用
<?php require './smarty/Smarty.class.php'; $sm = new Smarty; //$sm->force_compile = true; $sm- ...
- 命名空间namespace、smarty使用(视图分离,MVC)、smarty模板语法、smarty缓存、MVC模式
一.命名空间:namespace 命名空间 可以理解为逻辑上的使用,为了防止重名 namespace :关键字 加载:require_once();//加载一次 include_once() 申明命名 ...
- Smarty缓存的5个知识点
(1)页面缓存:整个页面全局的缓存 需要4个步骤: ①开启缓存 $smarty->caching = true; ②设置缓存的生命周期 $smarty->cache_lifetime ...
- smarty缓存控制
第一步初始化配置文件中设置 如果当前访问的模板有缓存就不需要连接数据库那些代码了,如果要模板局部不缓存,要写在iscache外,模板中用{nocache}
- smarty缓存技术
后台: <?php //要求:当存在缓存文件,直接输出,不存在缓存文件,自己创建缓存,输出 //步骤: //定义该页面存放缓存文件的路径 $filename="../../cache/ ...
- smarty缓存函数
原来在Smarty中在3.0以上版本中不在使用这个clear_all_cache(),而是以$smarty->clearAllCache(); 代替.其中$smarty->clear_ca ...
随机推荐
- PHP环境 PDOException PDOException: could not find driver
PDOException PDOException: could not find driver in dbcon.php:29 修改php.ini文件中的相关内容.对于找不到php.ini证明你的p ...
- Ubuntu下用devstack单节点部署Openstack
一.实验环境 本实验是在Vmware Workstation下创建的单台Ubuntu服务器版系统中,利用devstack部署的Openstack Pike版. 宿主机:win10 1803 8G内存 ...
- cas-client登录后报INVALID_PROXY_CALLBACK
服务器部署cas,登录后页面提示INVALID_PROXY_CALLBACK 然后查看cas的日志,日志报以下错误: 2018-06-29 11:36:06,251 ERROR [org.jasig. ...
- SpringBoot配置Shiro时@RequiresRoles不起作用
在SpringBoot中配置Shiro,结果@RequiresRoles.@RequiresPermissions等注解都无效 解决方法: 在ShiroConfiguration中注入开启支持aop. ...
- 44. Wildcard Matching (String; DP, Back-Track)
Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...
- python大规模数据处理技巧之一:数据常用操作
面对读取上G的数据,python不能像做简单代码验证那样随意,必须考虑到相应的代码的实现形式将对效率的影响.如下所示,对pandas对象的行计数实现方式不同,运行的效率差别非常大.虽然时间看起来都微不 ...
- 查看binlog的简单方法!
今天学到一个牛逼的东西,不用打开binlog文件就可以查看binlog里的event事件. 命令为:show binlog events in 'mysql-bin.000001' from 4 li ...
- php快速获取所有的自定义常量用户常量
快速获取自定义的常量.用户常量 echo "<pre>"; print_r(get_defined_constants(true)['user']); echo &qu ...
- 递归,回溯和DFS的区别
递归是一种算法结构,回溯是一种算法思想一个递归就是在函数中调用函数本身来解决问题回溯就是通过不同的尝试来生成问题的解,有点类似于穷举,但是和穷举不同的是回溯会“剪枝”,意思就是对已经知道错误的结果没必 ...
- 课堂限时训练-简易计算器·mini dc
课堂限时训练-简易计算器·mini dc 实验题目 采用后缀表达式法,设计一个建议计算器,实现+.-.*./四种运算. 代码实现 码云链接 关键代码部分及结果如下: 实验分析 首先,分析一下后缀表达式 ...