zoukankan      html  css  js  c++  java
  • Smarty静态缓存

    缓存能让程序访问起来更加快速,调数据库的数量变少,不能实时的跟数据库同步,

    一般缓存文件都放在smarty文件下cach文件夹中;

    建立缓存的PHP和HTML文件;

    先编辑PHP文件来查询显示数据库当中的文件;

    复制代码
    <?php
    //定义 相对于这个页面的一个文件保存路径
    $filname ="../cache/huancun.html";
    
    
    //查询数据并显示
    include("../init.inc.php");
    include("../dbda.class.php");
    $db= new dbda();
    $sql = "select * from car";
    $arr = $db->query($sql);
    
    $smarty->assign("shuzu",$arr);
    $smarty->display("huancun.html");//调用display模版显示
    复制代码

    在建立HTML用来显示的样式

    复制代码
    <h1>数据列表</h1>
    <table width="100%" border="1" cellpadding="0" cellspacing="0">
        <tr>
            <td>代号</td>
            <td>名称</td>
            <td>操作</td>
        </tr>
      <{foreach $shuzu as $v}>
          <tr>
            <td><{$v[0]}></td>
            <td><{$v[1]}></td>
            <td>操作</td>
        </tr>
      <{/foreach}>
    复制代码

    显示结果如下

    然后在PHP文件中加入缓存的代码; 打开网页就会显示,刷新一遍就会直接取问价夹中找了

    复制代码
    <?php
    //定义 相对于这个页面的一个文件保存路径
    $filname ="../cache/huancun.html";//缓存文件存放的位置
    
    //判断缓存文件是否存在,如果缓存文件存在直接调用缓存,如果缓存文件不存在,重新缓存
    if(file_exists($filname))//判断文件是否存在
    {
        include($filname);//直接拿来显示
        }
        else{
            //重新缓存
            ob_start();//开启内存缓存
            
            //查询数据并显示
    include("../init.inc.php");
    include("../dbda.class.php");
    $db= new dbda();
    $sql = "select * from car";
    $arr = $db->query($sql);
    
    $smarty->assign("shuzu",$arr);
    $smarty->display("huancun.html");//调用display模版显示
            
    //从缓存里取内容
    $str = ob_get_contents();        
    file_put_contents($filname,$str);//保存缓存
            
            ob_flush();//关闭内存缓存
            echo"WOWKWJWJWKJWKWJKWJWKWJWKJWKJW";
            
            }
    复制代码

    实线缓存后就会存到以下的文件夹中;

    加缓存时间

    $time = 10;//缓存有效期10s
    
    
    //判断缓存文件是否存在,如果缓存文件存在直接调用缓存,如果缓存文件不存在,重新缓存
    if(file_exists($filname) && filemtime($filname)+$time>=time())//判断文件是否存在 上一次修改时间加个条件修改时间大于当前时间。

    给页面加分页

    复制代码
    $sall = "select count(*) from car ";
    $zts = $db->Strquery($sall);
    include("../page.class.php");
    $page = new Page($zts,5);
    
    
    $smarty->assign("fpage",$page->fpage());
    复制代码

    让页面默认选第一页; 因为不可能只访问一个一页面所以要实现多个页面;

    复制代码
    $p = 1;
    if(!empty($_GET["page"]))
    {
       $p = $_GET["page"];
    }
    //定义 相对于这个页面的一个文件保存路径
    $filname ="../cache/huancun{$p}.html";//缓存文件存放的位置
    复制代码

  • 相关阅读:
    【bzoj2561】最小生成树 网络流最小割
    【bzoj4407】于神之怒加强版 莫比乌斯反演+线性筛
    【bzoj4816】[Sdoi2017]数字表格 莫比乌斯反演
    【bzoj3252】攻略 贪心+DFS序+线段树
    【bzoj1690】[Usaco2007 Dec]奶牛的旅行 分数规划+Spfa
    【bzoj3291】Alice与能源计划 模拟费用流+二分图最大匹配
    【bzoj2752】[HAOI2012]高速公路(road) 线段树
    wpf--- TextBlock文字设置属性
    无边框WPF窗体——允许拖动
    C# 枚举、字符串、值的相互转换
  • 原文地址:https://www.cnblogs.com/li1056822533/p/6794592.html
Copyright © 2011-2022 走看看