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

溫馨提示×

溫馨提示×

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

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

php靜態化指的是什么

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

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

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

什么是PHP靜態化

PHP靜態化的簡單理解就是使網站生成頁面以靜態HTML的形式展現在訪客面前,PHP靜態化分純靜態化和偽靜態化,兩者的區別在于PHP生成靜態頁面的處理機制不同。

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

優點就是減小服務器開銷,

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

  • 局部靜態化:是生成的靜態文件中,有局部的數據還是通過ajax技術動態獲取的;

  • 完全靜態化:即不存在動態獲取數據的情況,所以內容都來自靜態的html頁面

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

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

偽靜態的優點:美觀;便于搜索引擎收錄

PHP偽靜態:利用Apache mod_rewrite實現URL重寫的方法。

為什么要讓網頁靜態化

一、加快頁面打開瀏覽速度,靜態頁面無需連接數據庫打開速度較動態頁面有明顯提高;

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

三、減輕服務器負擔,瀏覽網頁無需調用系統數據庫;

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

數據庫出錯時,不影響網站正常訪問。

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

PHP生成靜態HTML頁面的方法

利用PHP模板生成靜態頁面

PHP模板實現靜態化非常方便,比如安裝和使用PHP Smarty實現網站靜態化,也可以自己寫一套模板解析規則,常見的可以模仿各類cms的模板規則。

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

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

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

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

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

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

以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();
  
  //從數據庫讀取數據,并賦值給相關變量
  
  //include ("xxx.html");//加載對應的商品詳情頁模板
  
  $content = ob_get_contents(); //把詳情頁內容賦值給$content變量
  $mem ->add( $goods_statis_content , $content , false, $expr );
  ob_end_flush(); //輸出商品詳情頁信息
  
}
  
?>

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

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

向AI問一下細節

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

php
AI

苏尼特左旗| 元阳县| 阿拉善盟| 新余市| 沂源县| 融水| 上林县| 鹿泉市| 永福县| 遵化市| 凤阳县| 平利县| 彭泽县| 佛冈县| 榆社县| 东乡县| 汝州市| 富平县| 景泰县| 柳州市| 盐亭县| 岑溪市| 资源县| 北流市| 奉新县| 祁门县| 离岛区| 兰州市| 忻城县| 景德镇市| 鸡泽县| 佛坪县| 黄梅县| 岢岚县| 江安县| 德惠市| 资中县| 天峻县| 哈尔滨市| 牟定县| 阿坝|