溫馨提示×

溫馨提示×

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

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

PHP頁面靜態(tài)化的優(yōu)缺點是什么

發(fā)布時間:2023-02-25 11:26:09 來源:億速云 閱讀:114 作者:iii 欄目:開發(fā)技術

這篇文章主要介紹“PHP頁面靜態(tài)化的優(yōu)缺點是什么”,在日常操作中,相信很多人在PHP頁面靜態(tài)化的優(yōu)缺點是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP頁面靜態(tài)化的優(yōu)缺點是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    一、頁面靜態(tài)化概念

    靜態(tài)化定義

    靜態(tài)化就是指把原本的動態(tài)生成的 html 頁面變成靜態(tài)內容保存起來,當用戶客戶端請求的時候,直接返回靜態(tài)頁面,不用再經過服務渲染,不用查詢數據庫,可以大大減少服務器和數據庫壓力,顯著提升網站性能。

    靜態(tài)頁面

    靜態(tài)頁面,即靜態(tài)網頁,是實際存在的,無需經過服務器的編譯,直接加載到客戶瀏覽器上顯示出來。靜態(tài)頁面需要占一定的服務器空間,且不能自主管理發(fā)布更新的頁面,如果想更新網頁內容,要通過FTP軟件把文件DOWN下來用網頁制作軟件修改(通過fso等技術例外)。常見的靜態(tài)頁面舉例:.html擴展名的、.htm擴展名的。

    動態(tài)頁面

    動態(tài)頁面是通過執(zhí)行asp,php,jsp,.net等程序生成客戶端網頁代碼的網頁。 動態(tài)頁面通常可以通過網站后臺管理系統(tǒng)對網站的內容進行更新管理。發(fā)布新聞,發(fā)布公司產品,交流互動,博客,網上調查等,這都是動態(tài) 網站的一些功能。也是我們常見的。 動態(tài)頁面常見的擴展名有:.asp .php .jsp .cgi.aspx 等。 注意:動態(tài)頁面的“動態(tài)”是網站與客戶端用戶互動的意思,而非網頁上有動畫的就是動態(tài)頁面。

    靜態(tài)化分類

    • 從形式看:純靜態(tài)和偽靜態(tài)

    • 從范圍看:整體靜態(tài)化和局部靜態(tài)

    靜態(tài)化優(yōu)點和缺點

    優(yōu)點:

    • 適合 SEO,有利于搜索引擎收錄

    • 提升網站速度和穩(wěn)定性

    • 網站更加安全,HTML 頁面避免 PHP 相關漏洞

    缺點:

    • 生成靜態(tài)頁面多,占用更多的存儲空間

    • 增加網站開發(fā)成本和維護成本

    二、靜態(tài)化實現

    認識 PHP Buffer

    在php中,buffer其實就是緩沖區(qū),一個內存地址空間,主要用于存儲數據;默認是開啟狀態(tài),大小默認4096,在php.ini文件中由output_buffering配置,只有當緩沖區(qū)滿了或者 php 運行完畢,才將數據輸出去。

    php.ini 代碼示例:

    output_buffering = on
    #打開output緩沖,默認打開的。

    緩沖流程:

    # 詳細了解輸出過程,大家可以自行查閱
    1.打開了 php 輸出緩存: echo,print -> php output_buffring -> server buffering -> browser buffering -> browser display
    2.未打開 php 輸出緩存: echo,print -> server buffering -> browser buffering -> browser display

    原生PHP輸出(創(chuàng)建 index.php 文件,本地配置虛擬域名"www.test.vip")。

    代碼如下(示例):

    <!DOCTYPE html>
    <html lang="">
    <head>
        <meta charset="utf-8">
        <title>網頁靜態(tài)化</title>
    </head>
    <body>
    <h2>排名</h2>
    <ul>
        <?php for ($i = 1; $i <= 5; $i++) { ?>
            <li>No.<?php echo $i; ?></li>
        <?php } ?>
    </ul>
    <?php ?>
    </body>
    </html>

    請求如下(www.test.vip/index.php):

    PHP頁面靜態(tài)化的優(yōu)缺點是什么

    使用PHP文件讀寫功能生成靜態(tài)頁面

    代碼如下(示例):

    <?php
    $data = '<!DOCTYPE html>
    <html lang="">
    <head>
        <meta charset="utf-8">
        <title>網頁靜態(tài)化</title>
    </head>
    <body>
    <h2>排名</h2>
    <ul>
        <li>No.1</li>
        <li>No.2</li>
        <li>No.3</li>
        <li>No.4</li>
        <li>No.5</li>
    </ul>
    </body>
    </html>';
    $fp = fopen("index.html", "w");
    if (!$fp) {
        echo "System Error";
        exit();
    }
    fwrite($fp, $data);
    fclose($fp);
    echo "生成 index.html 成功!";

    其中"$data"數據是解析好的前端代碼,若包含 PHP 原生代碼是無法解析的,那如何把動態(tài)的 PHP 語言靜態(tài)化?

    PHP OB 緩存機制生成靜態(tài)頁面

    代碼如下(示例):

    <?php
    ob_start();
    require_once('index.php'); // 引入模版文件
    $data = ob_get_contents();
    file_put_contents('index.html', $data); // 生成靜態(tài)文件 index.html
    ob_end_clean(); // 輸出信息并清除緩存
    $fp = fopen("index.html", "w");
    if (!$fp) {
        echo "System Error";
        exit();
    }
    fwrite($fp, $data);
    fclose($fp);
    echo "生成 index.html 成功!";

    其他

    ob_start() // 打開輸出控制緩沖,若 php.ini 已經開啟,那么這里會開啟一個新的輸出緩沖區(qū);
    ob_get_length() // 返回輸出緩沖區(qū)的長度
    ob_get_level() // 返回輸出緩沖區(qū)的嵌套級別
    ob_get_status() // 返回輸出緩沖區(qū)的狀態(tài)(數組形式返回,默認返回最頂層,參數為true時返回所有)
    ob_get_contents() // 返回輸出緩沖區(qū)的內容
    ob_get_clean() // 以字符串格式返回當前輸出緩沖區(qū)并關閉輸出緩沖,等價于ob_get_contents和ob_end_clean);
    ob_end_clean() // 清空(擦除)緩沖區(qū)并關閉輸出緩沖
    ob_get_flush() // 以字符串返回輸出緩沖區(qū)內容并關閉緩沖
    ob_end_flush() // 沖刷出(送出)輸出緩沖區(qū)內容緩沖并關閉輸出緩沖

    到此,關于“PHP頁面靜態(tài)化的優(yōu)缺點是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

    向AI問一下細節(jié)

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

    php
    AI