熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP頁面靜態化實現

2013-11-15 12:21:32  來源: PHP編程 

  現在的網站一般都需要與數據庫進行打交道訪問量較大時會對數據庫造成很大的壓力將一些動態頁面執行的結果進行緩存當下次進行訪問時直接訪問緩存可以減少對數據庫的壓力同時也可以加快服務器的響應速度緩存的結果可以存放到外存上也可以存在內存中在下一次訪問該頁面時直接從外存(內存)中直接讀取上次的結果

  [php]

  <?php

  //首先查看緩存文件

  if(file_exists(l)){

  //緩存時間為分鐘

  if(time()filemtime(l)<*){

  //將靜態文件內容返回給客戶端

  $start_time = microtime();

  echo 我是從靜態文件中讀取的數據:<br/>;

  echo file_get_contents(l);

  $end_time   = microtime();

  echo 靜態文件使用時間:($end_time$start_time);

  exit;

  }

  }

  //如果是首次訪問或者是上次緩存的時間超過分鐘則從數據庫中讀取數據

  $host     = ;

  $user     = root;

  $password = ;

  //記錄開始時間

  $start_time = microtime();

  mysql_connect($host$user$password);

  mysql_select_db(mydb);

  mysql_query(set names utf);

  $sql        = SELECT nameaddressemail FROM users;

  $resource   = mysql_query($sql);

  echo 我是從數據庫中讀取的數據:<br/>;

  ob_start();//打開輸出緩沖

  echo <table border=><tr><th>姓名</th><th>地址</th><th>Email</th></tr>;

  //輸出取得的信息

  while($userInfo = mysql_fetch_assoc($resource)){

  echo <tr>;

  echo <td>$userInfo[name]</td>;

  echo <td>$userInfo[address]</td>;

  echo <td>$userInfo[email]</td>;

  echo </tr>;

  }

  $end_time=microtime();

  $str=ob_get_contents();//獲取緩沖區的內容

  ob_end_flush();

  echo 從數據庫讀數據的時間:($end_time$start_time);

  file_put_contents(l$str);

  ?>

  <?php

  //首先查看緩存文件

  if(file_exists(l)){

  //緩存時間為分鐘

  if(time()filemtime(l)<*){

  //將靜態文件內容返回給客戶端

  $start_time = microtime();

  echo 我是從靜態文件中讀取的數據:<br/>;

  echo file_get_contents(l);

  $end_time   = microtime();

  echo 靜態文件使用時間:($end_time$start_time);

  exit;

  }

  }

  //如果是首次訪問或者是上次緩存的時間超過分鐘則從數據庫中讀取數據

  $host     = ;

  $user     = root;

  $password = ;

  //記錄開始時間

  $start_time = microtime();

  mysql_connect($host$user$password);

  mysql_select_db(mydb);

  mysql_query(set names utf);

  $sql   = SELECT nameaddressemail FROM users;

  $resource  = mysql_query($sql);

  echo 我是從數據庫中讀取的數據:<br/>;

  ob_start();//打開輸出緩沖

  echo <table border=><tr><th>姓名</th><th>地址</th><th>Email</th></tr>;

  //輸出取得的信息

  while($userInfo = mysql_fetch_assoc($resource)){

  echo <tr>;

  echo <td>$userInfo[name]</td>;

  echo <td>$userInfo[address]</td>;

  echo <td>$userInfo[email]</td>;

  echo </tr>;

  }

  $end_time=microtime();

  $str=ob_get_contents();//獲取緩沖區的內容

  ob_end_flush();

  echo 從數據庫讀數據的時間:($end_time$start_time);

  file_put_contents(l$str);

  ?>

  users表中有三條記錄使用的是apache服務測試結果如下

  從數據庫中讀數據其平均執行時間為:s左右

  直接讀緩存文件期平均執行時間為:

  數據庫中的記錄只有三條SQL也是簡單的單表查詢當表的中記錄很多時或者是多表查詢其執行的時間將會更長緩存雖然能夠減少訪問數據庫的次數加速響應時間但緩存並不適合所有的頁面有些頁面可能每次訪問時其頁面的顯示的內容就會發生變化這樣的頁面顯然不能使用緩存對於那些變化很少的頁面才比較適合使用緩存


From:http://tw.wingwit.com/Article/program/PHP/201311/20793.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.