亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP頁面靜態(tài)化的優(yōu)缺點與實現(xiàn)

 更新時間:2023年02月20日 09:42:15   作者:尋找09之夏  
眾所周知,頁面靜態(tài)化是門戶網(wǎng)站研發(fā)中必備的一項技能,本課程從純靜態(tài)化和偽靜態(tài)化兩個角度進行分析,帶領(lǐng)大家掌握在PHP中如何生成純靜態(tài)化頁面,在WEB服務(wù)器中如何配置偽靜態(tài),幫助大家掌握又一項加薪利器

前言

隨著網(wǎng)站的內(nèi)容的增多和用戶訪問量的增多,網(wǎng)站加載會越來越慢,受限于帶寬和服務(wù)器同一時間的請求次數(shù)的限制,,我們往往需要在此時對我們的網(wǎng)站進行代碼優(yōu)化和服務(wù)器配置的優(yōu)化。

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

靜態(tài)化定義

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

靜態(tài)頁面

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

動態(tài)頁面

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

靜態(tài)化分類

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

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

優(yōu)點:

  • 適合 SEO,有利于搜索引擎收錄
  • 提升網(wǎng)站速度和穩(wěn)定性
  • 網(wǎng)站更加安全,HTML 頁面避免 PHP 相關(guān)漏洞

缺點:

  • 生成靜態(tài)頁面多,占用更多的存儲空間
  • 增加網(wǎng)站開發(fā)成本和維護成本

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

認識 PHP Buffer

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

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>網(wǎng)頁靜態(tài)化</title>
</head>
<body>
<h1>排名</h1>
<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)頁面

代碼如下(示例):

<?php
$data = '<!DOCTYPE html>
<html lang="">
<head>
    <meta charset="utf-8">
    <title>網(wǎng)頁靜態(tài)化</title>
</head>
<body>
<h1>排名</h1>
<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"數(shù)據(jù)是解析好的前端代碼,若包含 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 已經(jīng)開啟,那么這里會開啟一個新的輸出緩沖區(qū);
ob_get_length() // 返回輸出緩沖區(qū)的長度
ob_get_level() // 返回輸出緩沖區(qū)的嵌套級別
ob_get_status() // 返回輸出緩沖區(qū)的狀態(tài)(數(shù)組形式返回,默認返回最頂層,參數(shù)為true時返回所有)
ob_get_contents() // 返回輸出緩沖區(qū)的內(nèi)容
ob_get_clean() // 以字符串格式返回當(dāng)前輸出緩沖區(qū)并關(guān)閉輸出緩沖,等價于ob_get_contents和ob_end_clean);
ob_end_clean() // 清空(擦除)緩沖區(qū)并關(guān)閉輸出緩沖
ob_get_flush() // 以字符串返回輸出緩沖區(qū)內(nèi)容并關(guān)閉緩沖
ob_end_flush() // 沖刷出(送出)輸出緩沖區(qū)內(nèi)容緩沖并關(guān)閉輸出緩沖

到此這篇關(guān)于PHP頁面靜態(tài)化的優(yōu)缺點與實現(xiàn)的文章就介紹到這了,更多相關(guān)PHP頁面靜態(tài)化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論