中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

(PHP學習筆記)實現頁面靜態化

發布時間:2020-08-25 07:17:14 來源:網絡 閱讀:634 作者:w1sw 欄目:web開發

  當我們在訪問各個門戶信息網站時,主頁都會給我們顯示各種頭條、導航信息(例如新聞網)。我們可以想象,面對眾多的數據庫訪問等操作,在我們訪問這些網頁的同時加載速度將會變得很慢。眾所周知,咱在訪問靜態頁面的速度是優于動態網頁的。所以,實現頁面靜態化可以有效地解決這些問題。

  那么,何為靜態化?其實根據字面理解我們可以得知,靜態化就是將一個動態的網頁轉變成一個類似靜態的網頁。動態頁面靜態化的實質就是:生成靜態的HTML文件。

  靜態化需要用到兩個關鍵的知識點:

    ①buffer緩沖區機制

    ②利用函數file_put_contents()寫入文件

  靜態化的過程:

     1、PHP模板頁面(與將要展示的HTML頁面一致,區別在于添加了PHP代碼)

    2、寫入靜態文件并生成HTML文件(從緩沖區中提取模板文件)


首先我們要先寫一個操作類,用于操作模板和生成靜態HTML文件:


operation.php:

$dsn = 'mysql:dbname=chatroom;host=127.0.0.1';
$user = 'root';$password = '123456';
$pdo = new PDO($dsn, $user, $password);
$sql="SELECT * FROM messages limit 3";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);  //以關聯數組的形式返回結果
$rows = $stmt->fetchAll();
ob_start(); //打開緩沖區
require_once('muban.php');

  代碼解讀:首先從數據庫中讀取數據,然后引入'muban.php'文件,目的是讓其在引入的過程中加入到緩沖區中。


根據流程步驟:

1、PHP模板頁面

  為了演示方便,簡單寫了一個界面,如下所示:

muban.php

<body>    
<div id="wrap">
        <h2>本月最熱主播排行榜</h2> 
       <ul id="ulm">        
    <?php            
    require_once('operation.php');    
     foreach($rows as $row){?> 
<li>名稱:<?php echo $row['user']?>&nbsp;&nbsp;&nbsp;&nbsp;收到禮物數量:
<?php echo $row['msg']?></li><hr/>            
<?php }?>        
</ul>    
</div>
</body>


  代碼解讀:遍歷'operation.php'文件中的'$rows'數組,將結果輸出到<li>標簽中。

2、寫入靜態文件并生成HTML文件(從緩沖區中提取模板文件)

  在operation.php中后續加上以下代碼:

if(file_put_contents('index.html',ob_get_clean())){  
  echo "success";
  }else{   
   echo "false";
  }

  利用'file_put_contents()'方法將緩沖區中的內容寫入到'index.html'文件中去,完成了靜態文件的生成。ob_get_clean()方法是從緩沖區中讀取數據并且清除緩沖區(清除緩沖區也可以理解為加載本函數內容不會顯示在終端)


最終生成了'index.html'界面:

(PHP學習筆記)實現頁面靜態化


從控制臺可以看到加載響應的時間為:

(PHP學習筆記)實現頁面靜態化

我們再看看muban.php頁面:

(PHP學習筆記)實現頁面靜態化

之前說過生成的html靜態文件是根據模板界面來生成的,所以界面是一樣的。再看看加載的相應時間:

(PHP學習筆記)實現頁面靜態化

從響應的時間我們可以看出,僅僅只有幾行代碼就產生了這么大的差距。可想而知,當網頁信息量十分龐大的時候,對加載響應的速度影響非常大。利用頁面靜態化,從而可以極大地避免這樣的問題出現。


-----------------------------------------------------------------------------------------

說到生成靜態文件,如果網頁信息有變化,那該怎么辦呢?答案就是重新生成(這不廢話嗎?)

自動觸發系統生成靜態化頁面有三種常見的方式:

    1、頁面添加緩存時間。當用戶請求頁面時,后臺判定頁面時間是否過期(超過了設置的緩存時間),如果超過了則生成新的靜態頁面;反之則獲取靜態頁面。

    2、手動觸發生成。為了解決頁面修改但是未能及時顯示的問題,后臺添加“一鍵更新”的按鈕實現點擊后生成靜態文件。

    3、Crontab定時掃描程序。該方法涉及到Linux操作系統上的應用:

    */5**** php/data/StaticPage/operation.php

該語句意為每5分鐘執行以下index.php文件。由于本人對其了解不深,就不做過多描述,以免誤人子弟。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大邑县| 长宁县| 鲁山县| 石棉县| 吉木乃县| 凤山市| 盐源县| 织金县| 永寿县| 秦安县| 浦城县| 舒城县| 昌都县| 慈溪市| 长宁县| 肃北| 克山县| 泗洪县| 都匀市| 广西| 承德县| 平和县| 奉节县| 吐鲁番市| 闽清县| 古田县| 北宁市| 余姚市| 固始县| 漳平市| 怀仁县| 宝鸡市| 泸水县| 福鼎市| 嘉善县| 山西省| 玉龙| 大余县| 航空| 浠水县| 乌兰察布市|