溫馨提示×

溫馨提示×

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

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

php靜態(tài)化指的是什么

發(fā)布時間:2023-01-05 09:35:11 來源:億速云 閱讀:123 作者:iii 欄目:編程語言

本篇內容主要講解“php靜態(tài)化指的是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“php靜態(tài)化指的是什么”吧!

PHP靜態(tài)化就是使網(wǎng)站生成頁面以靜態(tài)HTML的形式展現(xiàn)在訪客面前;PHP靜態(tài)化分純靜態(tài)化和偽靜態(tài)化,兩者的區(qū)別在于PHP生成靜態(tài)頁面的處理機制不同。純靜態(tài)化是把PHP生成的動態(tài)頁面保存成靜態(tài)的html文件,用戶訪問該靜態(tài)頁面,而不是用戶每一次訪問都重新生成一張相同的網(wǎng)頁,可以減小服務器開銷。偽靜態(tài)化是指將動態(tài)頁面的url地址轉換成類似于靜態(tài)頁面的url地址,便于搜索引擎的收錄。

什么是PHP靜態(tài)化

PHP靜態(tài)化的簡單理解就是使網(wǎng)站生成頁面以靜態(tài)HTML的形式展現(xiàn)在訪客面前,PHP靜態(tài)化分純靜態(tài)化和偽靜態(tài)化,兩者的區(qū)別在于PHP生成靜態(tài)頁面的處理機制不同。

純靜態(tài)化:是把PHP生成的動態(tài)頁面保存成靜態(tài)的html文件,用戶訪問該靜態(tài)頁面,而不是用戶每一次訪問都重新生成一張相同的網(wǎng)頁

優(yōu)點就是減小服務器開銷,

如果細分純靜態(tài),那么可以分為“局部純靜態(tài)”、“全部純靜態(tài)”:

  • 局部靜態(tài)化:是生成的靜態(tài)文件中,有局部的數(shù)據(jù)還是通過ajax技術動態(tài)獲取的;

  • 完全靜態(tài)化:即不存在動態(tài)獲取數(shù)據(jù)的情況,所以內容都來自靜態(tài)的html頁面

偽靜態(tài)化:是指將動態(tài)頁面的url地址轉換成類似于靜態(tài)頁面的url地址的過程

偽靜態(tài)化其實還是動態(tài)訪問,其實質是動態(tài)生成數(shù)據(jù),你訪問的網(wǎng)址類似于"http://yourhost,com/index/post/12",是一個靜態(tài)地址,該地址多見于博客地址,但偽靜態(tài)化中,你訪問的網(wǎng)址實際上經(jīng)過服務器解析,還是會解析成類似于"http://yourhost,com/?c=index&a=post&id=12"的地址,所以稱之為偽靜態(tài)化

偽靜態(tài)的優(yōu)點:美觀;便于搜索引擎收錄

PHP偽靜態(tài):利用Apache mod_rewrite實現(xiàn)URL重寫的方法。

為什么要讓網(wǎng)頁靜態(tài)化

一、加快頁面打開瀏覽速度,靜態(tài)頁面無需連接數(shù)據(jù)庫打開速度較動態(tài)頁面有明顯提高;

二、有利于搜索引擎優(yōu)化SEO,Baidu、Google都會優(yōu)先收錄靜態(tài)頁面,不僅被收錄的快還收錄的全;

三、減輕服務器負擔,瀏覽網(wǎng)頁無需調用系統(tǒng)數(shù)據(jù)庫;

四、網(wǎng)站更安全,HTML頁面不會受php相關漏洞的影響; 觀看一下大一點的網(wǎng)站基本全是靜態(tài)頁面,而且可以減少攻擊,防sql注入。

數(shù)據(jù)庫出錯時,不影響網(wǎng)站正常訪問。

生成html文章雖操作上麻煩些,程序上繁雜些,但為了更利于搜索,為了速度更快些,更安全,這些犧牲還是值得的。

PHP生成靜態(tài)HTML頁面的方法

利用PHP模板生成靜態(tài)頁面

PHP模板實現(xiàn)靜態(tài)化非常方便,比如安裝和使用PHP Smarty實現(xiàn)網(wǎng)站靜態(tài)化,也可以自己寫一套模板解析規(guī)則,常見的可以模仿各類cms的模板規(guī)則。

1、使用PHP文件讀寫功能與ob緩存機制生成靜態(tài)頁面

比如某個商品的動態(tài)詳情頁地址是: http://xxx.com?goods.php?gid=112

那么這里我們根據(jù)這個地址讀取一次這個詳情頁的內容,然后保存為靜態(tài)頁,下次有人訪問這個商品詳情頁動態(tài)地址時,我們可以

直接把已生成好的對應靜態(tài)內容文件輸出出來。

<?php
$gid = $_GET [ 'gid' ]+0; //商品id
$goods_statis_file = "goods_file_" . $gid . ".html" ; //對應靜態(tài)頁文件
$expr = 3600*24*10; //靜態(tài)文件有效期,十天
if ( file_exists ( $goods_statis_file )){
   $file_ctime = filectime ( $goods_statis_file ); //文件創(chuàng)建時間
      if ( $file_ctime + $expr -->time()){ //如果沒過期
       echo file_get_contents ( $goods_statis_file ); //輸出靜態(tài)文件內容
          exit ;
      } else { //如果已過期
          unlink( $goods_statis_file ); //刪除過期的靜態(tài)頁文件
          ob_start();
  
             //從數(shù)據(jù)庫讀取數(shù)據(jù),并賦值給相關變量
  
             //include ("xxx.html");//加載對應的商品詳情頁模板
  
             $content = ob_get_contents(); //把詳情頁內容賦值給$content變量
             file_put_contents ( $goods_statis_file , $content ); //寫入內容到對應靜態(tài)文件中
             ob_end_flush(); //輸出商品詳情頁信息
      }
} else {
  ob_start();
  
  //從數(shù)據(jù)庫讀取數(shù)據(jù),并賦值給相關變量
  
  //include ("xxx.html");//加載對應的商品詳情頁模板
  
  $content = ob_get_contents(); //把詳情頁內容賦值給$content變量
  file_put_contents ( $goods_statis_file , $content ); //寫入內容到對應靜態(tài)文件中
  ob_end_flush(); //輸出商品詳情頁信息
  
}
  
?>

2、使用nosql從內存中讀取內容(其實這個已經(jīng)不算靜態(tài)化了而是緩存);

以memcache為例:

<?php
$gid = $_GET [ 'gid' ]+0; //商品id
$goods_statis_content = "goods_content_" . $gid ; //對應鍵
$expr = 3600*24*10; //有效期,十天
  
$mem = new Memcache;
$mem --->connect( 'memcache_host' , 11211);
  
$mem_goods_content = $mem ->get( $goods_statis_content );
  
  
  
if ( $mem_goods_content ){
   echo $mem_goods_content ;
} else {
  ob_start();
  
  //從數(shù)據(jù)庫讀取數(shù)據(jù),并賦值給相關變量
  
  //include ("xxx.html");//加載對應的商品詳情頁模板
  
  $content = ob_get_contents(); //把詳情頁內容賦值給$content變量
  $mem ->add( $goods_statis_content , $content , false, $expr );
  ob_end_flush(); //輸出商品詳情頁信息
  
}
  
?>

memcached是鍵值一一對應,key默認最大不能超過128個字節(jié),value默認大小是1M,因此1M大小滿足大多數(shù)網(wǎng)頁大小的存儲。

到此,相信大家對“php靜態(tài)化指的是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

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

php
AI