首页 > 作文

PHP页面静态化——纯静态与伪静态用法详解

更新时间:2023-04-08 18:33:50 阅读: 评论:0

本文实例讲述了php页面静态化——纯静态与伪静态用法。分享给大家供大家参考,具体如下:

为什么要静态化页面?

当用户访问一个不经常更新的web页面,php接到指示对php脚本文件进行解析,从数据库查询到该页面所需要的数据,然后对页面模板进行渲染,最后将一个成品页面展示给用户。单次请求对于服务器来说非常简单,处理起来非常快,但是如果同时有成千上万各用户请求该页面呢?这无疑是对资源的一种浪费,这就是我们要做静态的目的。

静态化分为纯静态与伪静态,纯静态又分为局部纯静态和全部纯静态。

伪静态

伪静态顾名思义,它并不是真的静态页面而是伪装的。例如一个以php作为后端语言的web站点,正常情况下他的url应当是类似于http://www.example.com/index.php,当我们做了伪静态处理后,当你访问同一个页面它展示的url可能就是http://www.example.com/index.html了。它的作用是路由简化,能够更好的被搜索引擎收录,当你不想让用户知道你的后端语言时也可以采用这种方法。这里设计到了路由与重定向知识,不做详解。

纯静态

局部纯静态

一个页面通常由多个部分组成,例如一个博客,他可能由正文、分类、友情链接、栏目等部分组成。当有些部分更新频繁,而有些部分不常更新时就可以采用局部静态化。

全部纯静态

看了前面的内容这个就很容易理解了,当一个页面所有内容都不常更新即采用这种方式。

静态化页面实现原理

首先要说的是一个叫做缓冲器(buffer)的东西。举个简单的例子说明他的作用:我们在编辑一篇文档时,在我们没有保存之前,系统是不会向磁盘写入的,而是写到buffer中,当buffer写满或者执行了保存操作,才会将数据写入磁盘。对于php来说,每一次像 echo 这样的输出操作,同样是先写入到了 php bu育儿知识ffer 里,在脚本执行完毕或者执行了强制输出缓存操作,数据才会在浏览器上显示。
这里我们就要对这个缓冲区做一下文章了,在php输出内容之前,我们取出缓冲区的内容(这里就是渲染好的模板内容了),然后将其写入一个静态文件中并设置过期时间,当下次用户访问该页面的时候,如果该静态文件存在并且在有效期内,我们就直接将该静态文件展示给用户看,否则重写静态文件。

代码实现

楚门的世界 影评数据库连接,用到了单例模式。

databa.php

<?phpclass databa {  //用于保存实例化对象  private static $instance;  //用于保存数据库句柄  private $db = null;  //禁止直接实例化,负责数据库连接,将数据库连接句柄保存至私有变量$db  private f读书三余unction __construct($options) {    $this->db = mysqli_connect($options['db_host'], $options['db_ur'], $options['db_password'], $options['db_databa']);  }  //负责实例化数据库类,返回实例化后的对象  public static function getinstance($options) {    if (!(lf::$instance instanceof lf)) {      lf::$instance = new lf($options);    }    return lf::$instance;  }  //获取数据库连接句柄  public function db() {    return $this->db;  }  //禁止克隆  private function __clone() {    // todo: implement __clone() method.  }  //禁止重构  private function __wakeup() {    // todo: implement __wakeup() method.  }}

用于静态化页面

cache.php

<?phpclass cache {  public function index($options) {    //判断文件是否存在,判断是否过期    if (is_file('shtml/index.shtml') && (time() - filemtime('shtml/index.shtml') < 300)) {      require_once ('index.shtml');    }el {      require_once ('databa.php');      $con = databa::getinstance($options)->db();      $sql = "lect * from pro_test";      $exe_res = mysqli_query($con, $sql);      $res = mysqli_fetch_all($exe_res);      try{        if (!$res) {          throw new exception("no result");        }      }catch (exception $e) {        echo 'message: ' .$e->getmessage();      }      //开启缓存区,这后面的内容都会进缓存区      ob_start();      //引入模板文件(模板会渲染数据)      require_once ('templates/index.php');      //取出缓存区内容(在这里是渲染后的模板),将其保存(默认会覆盖原来的)为index.shtml(static html)      file_put_contents('shtml/index.shtml', ob_get_contents());    }  }}/静悄悄的近义词/数据库配置信息$options = [  'db_host' => 'mysql',  'db_ur' => 'root',  'db_password' => 'localhost',  'db_databa' => 'pro_s后现代主义hop',];$obj = new cache();$obj->index($options);

template/index.php

<!doctype><html><head>  <meta chart="utf-8">  <title>首页</title></head><body><?php foreach ($res as $item) {?><div>姓名:<?php echo $item[1]?></div><div>密码:<?php echo $item[2]?></div><?php }?></body></html>

浏览器访问 localhost/cache.php

本文发布于:2023-04-08 18:33:48,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/f46ad76142645db661019f32560e396c.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP页面静态化——纯静态与伪静态用法详解.doc

本文 PDF 下载地址:PHP页面静态化——纯静态与伪静态用法详解.pdf

标签:静态   页面   文件   用户
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图