程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php頁面靜態化,php頁面靜態

php頁面靜態化,php頁面靜態

編輯:關於PHP編程

php頁面靜態化,php頁面靜態


如何優化頁面響應時間:

  • 動態頁面靜態化
  • 優化數據庫
  • 使用負載均衡
  • 使用緩存

如果頁面中的一些內容不經常改動,可以使用動態頁面靜態化。好處是:減少服務器腳本的計算時間;降低服務器的響應時間。

1、動態URL地址設置靜態形式(偽靜態)

例如:http://xxx.com/index.php?c=play&id=1111    =>

http://xxx.com/play/1111.html  (並不是一個純靜態頁面)

2、buffer

buffer其實就是緩沖區,一個內存地址空間,主要用於存儲數據區域。

編寫一個buffer.php文件,並保存,並不是直接將文件內容保存在磁盤裡,而是先把內容寫入到buffer中,當一個buffer寫滿的時候,會把buffer中的數據寫入到磁盤裡,這是操作系統的buffer。

當執行一個PHP程序的時候,如果有輸出內容,會先放到輸出緩沖區,數據再通過tcp傳給客戶端或浏覽器。

要想數據能夠放到輸出緩沖區,首先打開輸出緩沖,通過php.ini文件output_buffering = On或者ob_start(),然後使用ob_get_contents()獲取輸出緩沖區內容。

3、PHP實現頁面純靜態化

純靜態化的html文件放在服務器端的磁盤。

基本方式:

  • file_put_contents()函數;

        int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

   成功會返回寫入到文件內數據的字節數,失敗時返回false。

  • 使用PHP內置緩存機制實現頁面靜態化-output_buffering

  ob函數

   ob_start(); 打開輸出緩沖區

   ob_get_contents(void);返回輸出緩沖區內容

     ob_clean(void);清空輸出緩沖區

     ob_get_clean(void);得到當前緩沖區的內容並刪除當前輸出緩沖區

 生成純靜態頁面的三種方式

  • 頁面添加緩存時間
<?php
//存在index.html並且在有效時間以內(5分鐘) if (file_exists('index.html') && (time()-filemtime('index.html') < 300)) { require_once 'index.html'; }else{ ob_start(); //連接數據庫獲取數據並填充到模板 echo 'helllo world'; file_put_contents('index.html', ob_get_contents()); } ?>
  • 手動觸發

  後台手動設置,主動生成

  • linux crontab 定時掃描程序

  crontab -e //編輯某個crontab文件,文件內容如:*/5 * * * * php執行程序所在目錄 /xx/xx.php

  http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

4、偽靜態

PHP處理偽靜態:正則表達式匹配

//http://xxx.cn/xx/test4.php/2/11.html
//http://xxx.cn/xx/test4.php?page=2&id=1,實際的訪問路徑
if(preg_match('/\/(\d+)\/(\d+).html/', $_SERVER['PATH_INFO'], $matches)){
     $param['page'] = $matches[1];
     $param['id'] = $matches[2];
}

Apache下rewrite配置

http://myapps.com/detail/12.html ==> http://myapps.com/apps/detail.php?id=12(實際訪問的路徑)

httpd.conf文件:開啟LoadModule rewrite_module modules/mod_rewrite.so

extra/httpd-vhosts.conf文件 作如下配置:

<VirtualHost 127.0.0.2:80>
ServerAdmin [email protected]
DocumentRoot "D:/wamp/www/myProject"
ServerName myapps.com
ErrorLog "logs/dummy-host2.example.com-error.log"
CustomLog "logs/dummy-host2.example.com-access.log" common

RewriteEngine on

#如果detail目錄下有12.html文件,就優先訪問該目錄下的文件
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteRule ^/detail/([0-9]*).html$ /apps/detail.php?id=$1
</VirtualHost>

http://www.onexin.net/apache-rewrite-detailed/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved