zoukankan      html  css  js  c++  java
  • PHP页面静态化的实现

    关于静态化,PHP的静态化分为:纯静态和伪静态。其中纯静态又分为:局部纯静态和全部纯静态。这里将的是全部纯静态。

    纯静态化实例:

    db.php、template.php 、test.php

    db.php代码如下:

     1 <?php
     2 header("content-type:text/html;charset=utf-8");
     3 /*
     4  * 单例模式连接数据库
     5  */
     6 class DB{
     7     static private $_instance;    //非public的类的实例的静态成员变量
     8     static private $_connectSource;    //连接数据库返回的资源句柄
     9     private $_dbConfig = array(
    10         'host'=>'127.0.0.1',
    11         'username'=>'root',
    12         'pwd'=>'root',
    13         'database'=>'mvc'
    14     );
    15 
    16     private function __construct(){    //非public 的构造函数
    17     }
    18 
    19     static public function getInstance(){    //访问实例的公共静态方法
    20         if(!self::$_instance instanceof self){
    21             self::$_instance = new self();
    22         }
    23         return self::$_instance;
    24     }
    25 
    26     public function connect(){
    27         if(!self::$_connectSource){
    28             //连接mysql服务
    29             self::$_connectSource = @mysql_connect($this->_dbConfig['host'],$this->_dbConfig['username'],$this->_dbConfig['pwd']);
    30             if(!self::$_connectSource){
    31                 //抛出异常
    32                 throw new Exception('mysql connect error'.mysql_error());
    33             }
    34             //选择数据库
    35             mysql_select_db($this->_dbConfig['database'],self::$_connectSource);
    36             //设置字符集
    37             mysql_query('set names "UTF8"',self::$_connectSource);
    38         }
    39         return self::$_connectSource; //返回资源
    40     }
    41 }

    template.php代码如下:

     1 <!DOCTYPE html>  
     2 <html lang="en">  
     3 <head>  
     4     <meta charset="UTF-8">  
     5     <title>新闻中心</title>  
     6      
     7 </head>  
     8 <body>  
     9     
    10     <div class="container">  
    11         <h3>新闻列表</h3>  
    12         <ul class="list-group">  
    13             <?php foreach ($news as $key => $value) { ?>  
    14             <li class="list-group-item"><a href="#"><?php echo $value['topic_title'];?></a></li>  
    15             <?php } ?>  
    16         </ul>  
    17     </div>  
    18 </body>  
    19 </html>  

    test.php代码如下:

     1 <?php
     2 //1、连接数据库,然后从数据库里面获取数据  
     3 //2、把获取到的数据填充到模板文件里面  
     4 //3、需要把动态的页面转化为静态页面,生成纯静态化文件 
     5 header("content-type:text/html;charset=utf-8");
     6 if(is_file('index.shtml')&&(time()-filemtime('index.shtml'))<300){
     7     require_once('index.shtml');
     8 }else{
     9     require_once('db.php'); 
    10     $connect = DB::getInstance()->connect();
    11     $sql = 'select * from ask_topic';
    12     $result=mysql_query($sql,$connect);
    13     $news=array();
    14     while($new=mysql_fetch_assoc($result)){
    15         $news[]=$new;
    16     }
    17    //开启缓存区    
    18    ob_start();  
    19    //引入模板文件 
    20    require_once('template.php');//动态文件。template.php界面同样进过缓冲区
    21    file_put_contents('index.shtml', ob_get_contents());// 当我们第一次访问 index.php时,服务器将为我们生成一个静态文件index.shtml。
    22 }

     静态化页面中如何想加载动态的内容如何处理?

    Ajax技术:jquery中ajax请求方式$.ajax()

    实现步骤:编写接口-》ajax请求接口操作

    接口数据:1.获取数据

                      2. 把我们获取到的数据组装成接口数据通信

    接口hot.php代码如下:

     1 <?php
     2 header("content-type:text/html;charset=utf-8");
     3 require_once 'db.php'; //引用连接数据库
     4 $connect = DB::getInstance()->connect();
     5 $sql = 'select `topic_desc` from ask_topic';
     6 $result=mysql_query($sql,$connect);
     7 $hots=array();
     8 while($hot=mysql_fetch_assoc($result)){
     9     $hots[]=$hot;
    10 }
    11 return show(200,'success',$hots);
    12 function show($code=0,$message="error",$data=array()){
    13   $result=array(
    14    'code'=>$code,
    15    'message'=>$message,
    16   'data'=>$data,
    17   );
    18 echo json_encode($result);
    19 }

    再次修改template.php 增加ajax动态调用部分。修改之后的代码如下:

     1 <!DOCTYPE html>  
     2 <html lang="en">  
     3 <head>  
     4     <meta charset="UTF-8">  
     5     <title>新闻中心</title>  
     6       <script type="text/javascript" src="http://localhost/2019/jquery.min.js"></script> 
     7 </head>  
     8 <body>  
     9     
    10     <div class="container">  
    11         <h3>新闻列表</h3>  
    12         <ul class="list-group">  
    13             <?php foreach ($news as $key => $value) { ?>  
    14             <li class="list-group-item"><a href="#"><?php echo $value['topic_title'];?></a></li>  
    15             <?php } ?>  
    16         </ul>  
    17     </div>  
    18 
    19          <h3>动态调用部分内容</h3>  
    20         <ul class="list-group" id="hot">  
    21             
    22         </ul>  
    23  <script type="text/javascript">
    24      $.ajax({
    25         url:"http://localhost/2019/hot.php",
    26         dataType:'json',
    27         type:'post',
    28         success:function(result){
    29            if(result.code==200){
    30              html='';
    31             $.each(result.data,function(key,value){
    32            
    33     html+='<li><a href="/">'+value.topic_desc+'</a></li>';
    34         });
    35             $("#hot").html(html);
    36             }
    37         }
    38      });
    39  </script>  
    40 
    41 
    42 </body>  
    43 </html>  

    访问test.php的时候 就可以显示效果

  • 相关阅读:
    数据库Tsql语句创建--约束--插入数据
    数据绑定的知识点<%%>,<%#%>,<%=%>
    一般处理程序cookie和session+末尾的多选框,下拉框
    拼接字符串
    李航统计学习方法(第二版)(十四):线性支持向量机与软间隔最大化
    李航统计学习方法(第二版)(十三):线性可分支持向量机与硬间隔最大化
    python 并发专题(十二):基础部分补充(四)协程
    python 并发专题(十一):基础部分补充(三)线程
    python 并发专题(十):基础部分补充(二)线程
    python 并发专题(九):基础部分补充(一)进程
  • 原文地址:https://www.cnblogs.com/lxj0205/p/10038194.html
Copyright © 2011-2022 走看看