由于在向服務(wù)器訪問一個資源文件的時候,靜態(tài)頁面要遠比動態(tài)頁面的效率要高。因為動態(tài)文件需要腳本執(zhí)行,或者數(shù)據(jù)庫的讀取開銷(磁盤IO開銷);
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的柳江網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!因此,就需要將動態(tài)網(wǎng)站的數(shù)據(jù)變成靜態(tài)化,更加提升網(wǎng)站的整體性能。(用戶體驗),要保證用戶在最短的時間內(nèi)高效的在瀏覽器端展示出頁面。
頁面靜態(tài)化分為:1、真靜態(tài):形成真正的靜態(tài)html文件;
2、偽靜態(tài):在URL地址上做出一個類似靜態(tài)URL的地址形式上好并且利于(SEO);利用apache中的重寫功能;
真靜態(tài)主要就是利用一個叫ob緩存的技術(shù)來實現(xiàn),一般一個php腳本在請求的時候,需要完成三個緩存,
1.ob緩存(php自帶,默認是關(guān)閉的),如果開啟的話,程序在執(zhí)行過程中,會把輸出的內(nèi)容先放到ob緩存中(遇到響應(yīng)頭,放入程序緩存中)
2.程序緩存(是必須開啟的,響應(yīng)頭和響應(yīng)主體),如果ob緩存沒有開啟,數(shù)據(jù)就直接到程序緩存中,在php5.3之前的版本,在響應(yīng)頭之前是不可以有輸出內(nèi)容的,不然會報錯,但php5.3之前就不會,因為在程序緩存輸出給瀏覽器時,會對緩存中的數(shù)據(jù)與響應(yīng)頭做相應(yīng)的調(diào)整;
3.瀏覽器緩存
現(xiàn)實ob緩存的相關(guān)函數(shù):
ob_start()ob緩存開啟
ob_get_contents()獲取ob緩存里面的內(nèi)容(但ob緩存中的數(shù)據(jù)還在,相當于復(fù)制一份)
ob_clean()清空ob緩存的內(nèi)容,但是不關(guān)閉ob緩存
ob_end_clean()清空ob緩存的內(nèi)容,并關(guān)閉ob緩存
ob_flush()將ob緩存的內(nèi)容輸出到程序緩存,但是不關(guān)閉ob緩存(相當于直接把ob緩存中數(shù)據(jù)剪切到程序緩存中)
ob_end_flush將ob緩存的內(nèi)容輸出到程序緩存,并關(guān)閉ob緩存
具體實現(xiàn)小案例:
先建立一個index.php文件在前端現(xiàn)實簡單數(shù)據(jù)
主要是循環(huán)輸出一些信息,然后有個鏈接可以點擊跳轉(zhuǎn);
<?php //連接數(shù)據(jù)庫 mysql_connect(\'localhost\',\'root\',\'mysql\'); mysql_query(\'set names utf8\'); mysql_query(\'use blog\'); $sql = \'select * from bl_article\'; $result = mysql_query($sql); $data = array(); while($row = mysql_fetch_assoc($result)){ $data[] = $row; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>頁面靜態(tài)化</title> <meta name="keywords" content="關(guān)鍵字列表" /> <meta name="description" content="網(wǎng)頁描述" /> <link rel="stylesheet" type="text/css" href="" /> <style type="text/css"></style> <script type="text/javascript"></script> </head> <body> <ul> <?php foreach ($data as $v){ ?> <li><?php echo $v[\'id\'],\'|\',$v[\'a_title\'],\'|\',"<a href=\'detal.php?id={$v[\'id\']}\'>詳情</a>"; ?>></li> <?php }?> <ul> </body> </html> 然后再接受處理:
主要實現(xiàn),就是為了,當?shù)谝淮卧L問的時候,開啟了ob緩存,并把ob緩存里面的數(shù)據(jù),寫入到一個靜態(tài)html文件中,當下次訪問中,就先判斷是否有該靜態(tài)文件了,如果有就直接讀取靜態(tài)文件,終止腳本結(jié)束;沒有就在生成;
<?php //接受id $id = isset($_GET[\'id\'])?intval($_GET[\'id\']):1; //判斷是否有靜態(tài)文件 if(file_exists("./static/{$id}.html")&& (filemtime("./static/{$id}.html")+30>time())){ include_once "./static/{$id}.html";exit; } //連接數(shù)據(jù)庫 mysql_connect(\'localhost\',\'root\',\'mysql\'); mysql_query(\'set names utf8\'); mysql_query(\'use blog\'); $sql = "select * from bl_article where id ={$id}"; $result = mysql_query($sql); $data = mysql_fetch_assoc($result); //開啟ob緩存 ob_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <title>頁面靜態(tài)化</title> <meta name="keywords" content="關(guān)鍵字列表" /> <meta name="description" content="網(wǎng)頁描述" /> <link rel="stylesheet" type="text/css" href="" /> <style type="text/css"></style> <script type="text/javascript"></script> </head> <body> <?php echo $data[\'id\']; ?> </body> </html> <?php //從ob緩存中獲取數(shù)據(jù) $data = ob_get_contents(); //保存靜態(tài)數(shù)據(jù)到靜態(tài)文件中 file_put_contents("./static/{$id}.html",$data); ?>
偽靜態(tài)實際訪問的是一個動態(tài)php腳本文件,但在地址欄上顯示的是.html后綴的文件,因為這樣有利于seo;
實現(xiàn)原理:利用Apache提供的Rewrite模塊,將URL地址重寫
1. 開啟Apache配置文件httpd.conf文件中的Rewrite模塊,然后需要重啟Apache
# 開啟重寫模塊 LoadModule rewrite_module modules/mod_rewrite.so
2.需要將當前虛擬主機的一個配置改掉
<VirtualHost *:80> ServerName www.servername.com DocumentRoot "D:/Web/www.xxx.com" <Directory "D:/Web/www.xxx.com"> DirectoryIndex index.php index.html Options indexes #將這里的nong改為all AllowOverride all Order deny,allow allow from all </Directory> </VirtualHost> 3、在當前站點根目錄下,創(chuàng)建一個.htaccess的文件,注意請使用編輯器來創(chuàng)建該文件,不然會創(chuàng)建不成功;
然后再該文件中編輯如下代碼:
# 表示開啟重寫功能 RewriteEngine on # 重寫的規(guī)則 這里可以使用正則來匹配 RewriteRule index.html index.php
以上純屬個人學習理解,如有不對,來訪者請指正。謝謝!
當前題目:頁面靜態(tài)化技術(shù)
轉(zhuǎn)載來源:http://m.newbst.com/article14/cggdge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站制作、虛擬主機、品牌網(wǎng)站設(shè)計、動態(tài)網(wǎng)站、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)