手把手教你Smarty缓存技术

  大家应该知道缓存机制能能有效的减轻网站的服务器压力,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中缓存方式就全部讲解完了,有兴趣的朋友可以自己试验下不同的效果。

时间: 2025-01-20 20:06:04

手把手教你Smarty缓存技术的相关文章

php下Smarty的配置与高级缓存技术详解

前言 Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface. 学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件,给后台服务器减少很多负担. 下载与配置 官方下载:Smarty Download 下载完后,解

Smarty的配置与高级缓存技术分享_php模板

前言 Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface. 学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存成一个静态的HTML页,当设定Smarty的cache属性为true时,在Smarty设定的cachetime期内将用户的WEB请求直接转换到这个静态的HTML文件中来,这相当于调用一个静态的HTML文件,给后台服务器减少很多负担. 下载与配置 官方下载:Smarty Download 下载完后,解

php smarty模板 foreach循环块及缓存技术

function get_product_tree() {   $sql="select * from ecs_category";   $rs = $GLOBALS['db']->getOne($sql);   foreach ($rs AS $row)   {    $rows['cat_id']=$row['cat_id '];    $rows['cat_name']=$row['cat_name'];      }   return $rows;   } 上面是我的代码

CSS3 3D 技术手把手教你玩转_表单特效

css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3D的效果.旋转则不再是2D平面上的旋转,而是三维坐标系的旋转,就包括X轴,Y轴,Z轴旋转.平移同理. 当然用理论来说明,估计你还不明白.下面是3个gif: 沿着X轴旋转 沿着Y轴旋转 沿着Z轴旋转 旋转应该没问题了,那理解平移起来就比较容易了,就是在在X轴.Y轴.z轴移动. 你可能会说透视比较不好理

手把手教你改善界面交互动画

  本文将探究UI设计中动画效果的过度应用,通过对比早期的视觉设计,为UI动画的有效设计提供一些建议,另外附上实战案例,手把手教你改进文中案例的交互动画哟. 遗憾的是,这并非某个做作的反面案例--而是某个近期客户处拿来的实例. 简介 自70-80年代CRT屏幕上映第一幅光栅图形以来,人们对数字视觉设计的态度便不断进化.与其他艺术领域不同,数字设计的潮流始终随可用工具的进化而变化. 我们已经见证了设备显示能力的不断进步--从有限的CGA分辨率 (320 x 200) 到VGA(640 x 480)

比较详细的手把手教你写批处理(willsort题注版)第1/5页_DOS/BAT

另,建议Climbing兄取文不用拘泥于国内,此类技术文章,内外水平相差极大:与其修正国内只言片语,不如翻译国外优秀著述. -------------------------------------------------------- 标题:手把手教你写批处理-批处理的介绍 作者:佚名 编者:Climbing 题注:willsort 日期:2004-09-21 -------------------------------------------------------- 批处理的介绍 扩展名

【云计算的1024种玩法】手把手教你如何编译一个高性能 OpenResty

介绍 本教程将介绍如何一步一步手动编译 OpenResty,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,拥有非常好的拓展性让服务器发挥更好性能.教程中将全部依赖 Linux 发行版组建中的依赖,而免除编译带来的后期维护成本. OpenResty 的额外拓展: OpenSSL 1.1.0,提供 ALPN 支持,支持 HTTP/2 Nginx-CT,透明证书提高 HTTPS 网站的安全性和浏览器支持 ngx_PageSpeed,Google 家的网站性能优化工具

手把手教你:如何让Windows恋上Linux bash

4月7日,微软开始向用户推送Windows 10 biuld 14316预览版,该版本不仅在Cortana跨平台支持.Edge浏览器支持和虚拟桌面方面得到了优化,还能够原生支持Linux bash. 对现在的开发者来说,Linux已经是很多人必须的开发平台,在windows上不必借助虚拟机就能运行Bash,无疑有极大的吸引力. 但是微软并没有在最新版本Windows 10里直接内置Bash,需要开发者进行一些安装和设置工作.下面,笔者将会手把手教你,如何实现Ubuntu on Windows.

机器学习零基础?手把手教你用TensorFlow搭建图像识别系统(三)| 干货

雷锋网按:本文是介绍用TensorFlow构建图像识别系统的第三部分. 在前两部分中,我们构建了一个softmax分类器来标记来自CIFAR-10数据集的图像,实现了约25-30%的精度. 因为有10个不同可能性的类别,所以我们预期的随机标记图像的精度为10%.25-30%的结果已经比随机标记的结果好多了,但仍有很大的改进空间.在这篇文章中,作者Wolfgang Beyer将介绍如何构建一个执行相同任务的神经网络.看看可以提高预测精度到多少!雷锋网(公众号:雷锋网)对全文进行编译,未经许可不得转