php頁面靜態化筆記


<?php
/**
 * php頁面靜態化
 * 靜態化分為 真靜態和偽靜態
 * 靜態化的有點在於 SEO 和 安全性 使用緩存機制還可以大大提高網站的速度
 */

/**
 * php自帶的緩存機制
 * 需要在php.ini中進行配置
 * 或者使用ob_start()-> output_buffering:on
 * 關於幾個緩存的函數:ob_start();ob_clean();ob_get_content();ob_end_clean();關閉緩存同時清空
 * ob_flush();輸出緩存里面的內容並且清空,但是不關閉 ob_end_flush();關閉同時輸出
 */

/**/
ob_start();//開啟緩存
echo 'yyy';//沒有開啟緩存的情況下會報錯,因為沒有遇到header的時候,php默認發送一個header,這個header無法修改
header('content-type:text/htm;charset=utf-8');
echo '123';
ob_get_contents();//得到緩存的內容
ob_end_clean();
echo 'aa';//放在程序緩存里面
header('content-type:text/htm;charset=utf-8');//運行的時候會報錯,因為緩存已經關閉


/*
 * 利用php自帶的緩存機制做真緩存
 * 真緩存的頁面的內容應該是長期都不需要變的,並且不同用戶看到的東西都是一樣的
 * 原理:用戶第一次訪問的時候查詢數據庫,然后得到緩存區的內容,並且放到緩存文件里面
 * */
/**
 */
ob_start();
//判斷緩存文件是否存在
$html_filename='static.html';
if(file_exists($html_filename) &&  (filemtime($html_filename)+30) > time())//超過30秒則重新生成
{
    //直接取出緩存頁面的內容
    echo file_get_contents($html_filename);
    exit;
    
} 
echo 'Your content';
$html_content=ob_get_contents();
$html_filename='static.html';
file_put_contents($html_filename,$html_content);

/*
 *  * 上述原理的缺陷:1.實時性不夠  2.不利於seo優化
 * 解決辦法:在數據庫發生增加和更新的時候更新緩存文件
 * */

if($_REQUEST['act'] == 'add')//update 也是
{
  //先獲取模版文件
  $template_content=file_get_contents('template.tpl');
  //替換標簽
  $php_content=str_replace("{",'<?php echo ',$template_content);
  $php_content=str_replace("}",'?>',$template_content);
  //生成緩存文件
  $php_tplname='php_tpl.php';
  file_put_contents($php_tplname,$php_content);
  include(file_put_contents);
  $html_content=ob_get_contents();
  $html_filename='static.html';
  file_put_contents($html_filename,$html_content);
  
}

/**
 * 真靜態的缺陷:生成的 緩存文件很多,占硬盤
 * 對於海量的html生成,可以考慮用偽靜態
 */

$str='123,33,333';
preg_match('/\d\d\d\d/is',$str,$arr);//匹配連續四個出現的數字 返回到arr 只是匹配一個 arr[0]
preg_match('/(\d)(\d)/is',$str,$arr);//這時候arr返回三個 0放置匹配的字符串,arr[n]按照表達式順序返回匹配的字符串

//對於需要全部匹配的使用preg_match_all()函數;正則表達式里面需要'' 不要使用""

/**
 * 使用apache的rewrite機制
 * 注意點:apache的配置 開啟rewrite module 也要設置derectory的權限 allowoverride from all 
 * 文件 .htacss //匹配規則是從上而下的,可以設置error頁面
 * RewireEngine On
 * news-id(\d)\.html$  news.php?id=$1
 * news-id(\d).html$    error.php      #錯誤頁面放到最后
 */


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM