이 문서의 예에서는 PHP 페이지 정적화의 순수 정적 및 의사 정적 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
사용자가 자주 업데이트되지 않는 웹 페이지 에 액세스하면 PHP는 PHP 스크립트 파일을 구문 분석하고 데이터베이스에서 페이지에 필요한 데이터를 쿼리한 다음 페이지 템플릿을 렌더링하고 마지막으로 완제품 페이지가 사용자에게 표시됩니다. 단일 요청은 서버가 처리하기에 매우 간단하고 빠릅니다. 그러나 수천 명의 다른 사용자가 동시에 페이지를 요청하면 어떻게 될까요? 이는 의심할 여지 없이 자원 낭비이며, 이것이 정적인 작업을 수행하는 목적입니다.
정적화는 순수 정적과 의사 정적으로 나뉘며, 순수 정적은 부분 순수 정적과 전체 순수 정적으로 구분됩니다.
관련 학습 권장 사항: 초급부터 숙련까지의 PHP 프로그래밍
이름에서 알 수 있듯이 pseudo-static은 실제 정적 페이지가 아니라 가짜 페이지입니다. 예를 들어 백엔드 언어로 PHP를 사용하는 웹사이트의 경우 일반적인 상황에서는 해당 URL이 의사 정적 처리를 수행한 후 http://www.example.com/index.php와 유사해야 합니다. 방문 동일한 페이지에 표시되는 URL은 http://www.example.com/index.html일 수 있습니다. 그 기능은 라우팅을 단순화하고 검색 엔진에서 더 나은 색인을 생성하는 것입니다. 이 방법은 사용자가 백엔드 언어를 알지 못하게 하려는 경우에도 사용할 수 있습니다. 라우팅 및 리디렉션 지식은 여기에서 설계되었으며 자세히 설명하지 않습니다.
페이지는 일반적으로 텍스트, 카테고리, 친숙한 링크, 열 등으로 구성될 수 있는 블로그와 같은 여러 부분으로 구성됩니다. 일부 부분은 자주 업데이트되고 일부 부분은 드물게 업데이트되는 경우 부분 정적화를 사용할 수 있습니다.
이전 내용을 읽어보면 이해하기 쉽습니다. 페이지의 모든 내용이 자주 업데이트되지 않을 때 사용하는 방법입니다.实 정적 페이지 구현의 원리
코드 구현
Database.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. } }
정적 페이지의 경우Database.php
<?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);
用于静态化页面
Cache.php
<!DOCTYPE> <html> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <?php foreach ($res as $item) {?> <p>姓名:<?php echo $item[1]?></p> <p>密码:<?php echo $item[2]?></p> <?php }?> </body> </html>
template/index.php
浏览器访问 localhost/Cache.php
Cache.php
rrreeetemplate/index.php
브라우저 액세스 localhost/Cache.php
위 내용은 PHP 페이지 정적화의 순수 정적 및 의사 정적 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!