• php文件缓存


    缓存
    做缓存的目的是为了让程序运行起来更加迅速。因为如果程序访问数据库时数据量较大,执行起来会比较慢。而且每一次刷新页面都会访问依稀数据库,然后再把数据显示在页面上。
    设置缓存也有一个缺点,那就是缓存时间要设置好,如果缓存时间较长,那么数据库数据变化时,不能及时的在页面上显示。例如缓存不能用在秒杀商品,或者出售商品上面,因为数量不能及时的更新。
     1 <?php
     2 //缓存文件一般都放在caches文件夹里面。
     3 
     4 //定义一个该页面的缓存文件路径,也就是该缓存的文件放在哪个文件夹里面。
     5 
     6 $filename = "../cache/testhuancun.html";//定义了一个缓存的文件,文件名为testhuancun.html,位置在../cache文件夹里面。
     7 
     8 //设置一个缓存时间
     9 $time = 10;//代表缓存时间设置为10s.
    10 
    11 //判断缓存文件是否存在
    12 if(!file_exists($filename) || filemtime($filename)+$time<time())
    13 //判断文件是否存在,如果不存在,执行{}里面的代码。还要判断缓存时间有没有过,如果已经过了,要重新读取数据库更新缓存。
    14 //filemtime($filename)读取文件最后被修改的时间,time()取当前时间戳
    15 
    16 {
    17     //开启内存缓存
    18     ob_start();//这里开启内存缓存以后,下面要输出的内容全部放在内存缓存里面。
    19     
    20     include("../init.inc.php");
    21     include("../DBDA.php");
    22     $db = new DBDA();
    23     $sql = "select * from nation";
    24     $attr = $db->Query($sql);
    25     $smarty->assign("nation",$attr);
    26     $smarty->display("test.html");
    27     
    28     //把内存里面的内容读出来
    29     $nr = ob_get_contents();//ob就是代表的缓存,读取的内容就是整个静态页面。
    30     
    31     //将读到的内容存放到缓存文件
    32     file_put_contents($filename,$nr);//get是取出内容,put是往里放内容,把内存缓存的文件存到¥filename里面。
    33     
    34     
    35     //清除内存缓存
    36     ob_flush();//把内存缓存的内容清除掉,不让它们继续留在缓存内存里面,但是需要缓存的内容已经放在了$filename里面了,已经保存下来了。
    37     
    38     echo "#############################";//输出内容加上一句话,观察输出内容是输出的缓存页面还是加载数据库的页面。这句话放在了ob_flush后面,不会被清除掉。
    39 }
    40 else//如果缓存文件存在,直接将缓存文件拿到页面显示。
    41 {
    42     include($filename);//将缓存的页面加载到显示页面中
    43 }

    下面是test.html文件内容

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5 <title>无标题文档</title>
     6 </head>
     7 
     8 <body>
     9 <table width="100%" border="1" cellpadding="0" cellspacing="0">
    10     <tr>
    11         <td>代号</td>
    12         <td>名称</td>
    13     </tr>
    14     <{foreach $nation as $v}>
    15     <tr>
    16         <td><{$v[0]}></td>
    17         <td><{$v[1]}></td>
    18     </tr>
    19     <{/foreach}>
    20 </table>
    21 </body>
    22 </html>
  • 相关阅读:
    component
    js的for循环中DOM变化不了,在循环结束才起效的问题
    mongodb 遇见不可行
    vue.js中$emit的理解
    最近前端关键词-模块化、前后端分离、单页面应用
    webpack的使用1
    一维数组的声明和使用
    ASP.net中的几种分页方法
    各种排序及原理
    数据结构-算法
  • 原文地址:https://www.cnblogs.com/chenshanhe/p/7114968.html
Copyright © 2020-2023  润新知