我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

学习与交流:

为什么要使页面静态化?

当用户访问不经常更新的网页时,会指示PHP解析php脚本文件,从数据库中查询页面所需的数据,然后渲染页面模板,最后将完成的页面显示给用户。

单个请求对于服务器来说处理起来非常简单和快速,但是如果数千个不同的用户同时请求该页面怎么办?这无疑是一种资源的浪费,而这正是做静态的目的。

静态分为纯静态和伪静态,纯静态又分为部分纯静态和完全纯静态。

伪静态

顾名思义,伪静态并不是真正的静态页面,而是假静态页面。例如,对于使用 PHP 作为后端语言的网站,其 URL 通常应类似于。

经过我们做伪静态处理后,您访问同一页面时显示的URL可能是相同的。

它的作用是简化路由并更好地被搜索引擎索引。当您不希望用户了解您的后端语言时也可以使用此方法。

纯静态

局部纯静态

一个页面通常由多个部分组成,比如博客,可能由文本、类别、链接、栏目等组成。当某些部分更新频繁,而另一些部分更新不频繁时,可以使用部分静态化。

全部纯静态

看完前面的内容就很容易理解了。当页面的所有内容不经常更新时使用此方法。

静态页面实现原理

首先要谈的是()。

我们举一个简单的例子来说明它的功能:当我们编辑一个文档时,在我们保存之前系统不会写入磁盘,而是会写入到磁盘中。当它已满或执行保存操作时,系统将不会写入磁盘。数据将被写入磁盘。

对于PHP来说,像echo这样的每一个输出操作也是先写入PHP。直到执行脚本或执行强制输出缓存操作后,数据才会显示在浏览器上。

对于这个缓冲区,在PHP输出内容之前,我们先把缓冲区的内容取出来(这里是渲染出来的模板内容),然后写入静态文件并设置过期时间,下次用户访问该页面时,如果静态文件存在并且在有效期内,我们将直接将静态文件显示给用户,否则我们将重写静态文件。

代码实现

数据库连接采用单例模式。

.php


class Database {
  //用于保存实例化对象
  private static $instance;
  //用于保存数据库句柄
  private $db = null;

  //禁止直接实例化,负责数据库连接,将数据库连接句柄保存至私有变量$db
  private function __construct($options) {
    $this->db = mysqli_connect($options['db_host'], $options['db_user'], $options['db_password'], $options['db_database']);
  }

  //负责实例化数据库类,返回实例化后的对象
  public static function getInstance($options) {
    if (!(self::$instance instanceof self)) {
      self::$instance = new self($options);
    }
    return self::$instance;
  }

  //获取数据库连接句柄
  public function db() {
    return $this->db;
  }

  //禁止克隆
  private function __clone() {
    // TODO: Implement __clone() method.
  }

  //禁止重构
  private function __wakeup() {
    // TODO: Implement __wakeup() method.
  }
}

用于静态页面

缓存.php


class Cache {
  public function index($options) {
    //判断文件是否存在,判断是否过期
    if (is_file('shtml/index.shtml') && (time() - filemtime('shtml/index.shtml') < 300)) {
      require_once ('index.shtml');
    }else {
      require_once ('Database.php');
      $con = Database::getInstance($options)->db();
      $sql = "SELECT * 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_user' => 'root',
  'db_password' => 'localhost',
  'db_database' => 'pro_shop',
];
$obj = new Cache();
$obj->index($options);

/index.php


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

html>

浏览器访问/Cache.php

静态显示方式_伪静态只显示首页_伪静态怎么设置

伪静态怎么设置_伪静态只显示首页_静态显示方式

伪静态怎么设置_伪静态只显示首页_静态显示方式

原文链接:

以上就是本文的全部内容。希望所有程序员努力提高个人技能。最后,小编温馨提醒:每天读书5分钟,每天学习一点,每天进步一点。

伪静态只显示首页_静态显示方式_伪静态怎么设置

丨免费获取热门教程资源丨

伪静态怎么设置_静态显示方式_伪静态只显示首页

伪静态只显示首页_伪静态怎么设置_静态显示方式

静态显示方式_伪静态只显示首页_伪静态怎么设置

二维码
扫一扫在手机端查看

本文链接:https://by928.com/7841.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线