目錄
PHP页面静态化:真静态的两种方案,php静态
%title%
php静态化页面方法,伪静态的也可以
php对于页面静态化问题
首頁 php教程 php手册 PHP页面静态化:真静态的两种方案,php静态

PHP页面静态化:真静态的两种方案,php静态

Jun 13, 2016 am 09:28 AM
偽靜態

PHP页面静态化:真静态的两种方案,php静态

----------------------------------------------------------------------------------------------

<span>方案1:如果静态文件存在,且生成时间30秒内,直接返回静态页面(有时间延迟)<br />/*<br />|------------------<br />| <www.chenwei.ws><br />|------------------<br />*/<br /></span><span>header</span>('content-type:text/html;charset=utf-8'<span>);</span>
<span>$id</span> = <span>$_GET</span>['id'] ? <span>intval</span>(<span>$_GET</span>['id']) : ''<span>;
</span><span>if</span>(<span>$id</span> === '') <span>die</span>('请输入要查询的新闻id!'<span>);
</span><span>$html_file</span> = "news-id-".<span>$id</span>.".html"<span>;

</span><span>//1.</span><span>主要代码</span>
<span>if</span>(<span>file_exists</span>(<span>$html_file</span>) && <span>filemtime</span>(<span>$html_file</span>) + 30 >= <span>time</span><span>())
{
    </span><span>echo</span> '静态页面:'<span>;
    </span><span>echo</span> <span>file_get_contents</span>(<span>$html_file</span>);<span>exit</span><span>;
}

</span><span>//</span><span>这里也可以使用DB工具类</span>
<span>$con</span> = <span>mysql_connect</span>('localhost', 'root', '123456'<span>);
</span><span>if</span>(!<span>$con</span><span>)
{
    </span><span>die</span>('连接失败!'<span>);
}
</span><span>mysql_select_db</span>('testdb', <span>$con</span><span>);
</span><span>$sql</span> = "select * from bo_question where question_id = <span>$id</span>"<span>;
</span><span>$res</span> = <span>mysql_query</span>(<span>$sql</span>, <span>$con</span><span>);
</span><span>if</span>(<span>$row</span> = <span>mysql_fetch_assoc</span>(<span>$res</span><span>))
{
    </span><span>ob_start</span>();<span>//2.</span><span>启动ob缓存</span>
    <span>header</span>('content-type:text/html;charset=utf-8'<span>);
    </span><span>echo</span> '<head><meta http-equiv="content-type" content="text/html;charset=utf-8" /></head>'<span>;
    </span><span>echo</span> '<table>;
    </span><span>echo</span> '<tr><td>问题详细内容</td></tr>'<span>;
    </span><span>echo</span> "<tr><td>标题:{<span>$row</span>['question_title']}</td></tr>"<span>;
    </span><span>echo</span> "<tr><td>详细:{<span>$row</span>['question_detail']}</td></tr>"<span>;
    </span><span>echo</span> '</table>'<span>;
    </span><span>$ob_str</span> = <span>ob_get_contents</span><span>();
    </span><span>//3.</span><span>把ob_str保存到一个静态文件页面,取文件名有讲究:1.唯一标识该新闻 2.利于seo</span>
    <span>file_put_contents</span>("news-id-".<span>$id</span>.".html", <span>$ob_str</span><span>);<br />  <br />  //关闭数据库连接(非必须; 非长连接下,脚本执行完会自动关闭) <br />  mysql_close($con);
}</span><span>else</span><span>{
    </span><span>echo</span> '没有查询到资源!'<span>;
}</span>
登入後複製

@黑眼诗人

登入後複製
方案2:使用模板替换技术(没有时间延迟)<br />/*<br />|------------------<br />| <www.chenwei.ws><br />|------------------<br />*/
登入後複製
<span>$oper</span> = <span>$_POST</span>['oper'<span>];//添加操作
</span><span>if</span>(<span>$oper</span> === 'add'<span>)
{
    </span><span>$title</span> = <span>$_POST</span>['title'<span>];
    </span><span>$content</span> = <span>$_POST</span>['content'<span>];
    
    </span><span>//</span><span>如果严格按MVC,这里应该调用model了</span>
    <span>$con</span> = <span>mysql_connect</span>('localhost', 'root', '123456'<span>);
    </span><span>if</span>(!<span>$con</span><span>)
    {
        </span><span>die</span>('连接失败!'<span>);
    }
    </span><span>mysql_select_db</span>('news', <span>$con</span><span>);
    </span><span>$sql</span> = "insert into question(null, '<span>$title</span>', '<span>$content</span>', '')"<span>;
    </span><span>if</span>(<span>mysql_query</span>(<span>$sql</span>, <span>$con</span><span>))
    {
        </span><span>//1.</span><span>生成静态文件 </span>
        <span>$id</span> = <span>mysql_insert_id</span><span>();
        </span><span>$html_filename</span> = 'news-id'.<span>$id</span>.'.html'<span>;
        </span><span>$html_fp</span> = <span>fopen</span>(<span>$html_filename</span>, 'w'<span>);
        
        </span><span>//2.</span><span>把模板文件读取(news.html)</span>
        <span>$fp</span> = <span>fopen</span>('news.tpl', 'r'<span>);
        </span><span>//</span><span>r 只读方式打开; r+ 读写方式打开; w 写入方式打开:文件内容将被清空!如果文件不存在将创建; a 以追加的方式打开
        
        //3.循环读取
        //如果没有读到文件的最后,就一直读取</span>
        <span>while</span>(!<span>feof</span>(<span>$fp</span><span>))
        {
            </span><span>//</span><span>一行行读</span>
            <span>$row</span> = <span>fgets</span>(<span>$fp</span><span>);
            </span><span>//</span><span>把占位符替换掉 => 可以自定义完整的替换规则函数</span>
            <span>$row</span> = <span>str_replace</span>('%title%', <span>$title</span>, <span>$row</span>);<span>//</span><span>如果不重新赋值$row, $row值不会改变</span>
            <span>$row</span> = <span>str_replace</span>('%content%', <span>$content</span>, <span>$row</span><span>);
            
            </span><span>fwrite</span>(<span>$html_fp</span>, <span>$row</span><span>);//4.将内容写入静态文件
        }<br />
        </span><span>//5.</span><span>文件必须关闭</span>
        <span>fclose</span>(<span>$html_fp</span><span>);
        </span><span>fclose</span>(<span>$fp</span><span>);
        
        </span><span>echo</span> "添加成功。<a href='newslist.php'>点击查看新闻!</a>"<span>;
    }
    </span><span>else</span><span>
    {
        </span><span>die</span>('添加失败!'<span>);
    }
}
</span><span>//</span><span>此时在新闻列表内,点击查看详情的链接,可以改成生成的静态页面地址,直接进入静态文件。

//news.tpl模板文件</span><span>
/*</span><span>
<html>
    <head>
        <meta charset="utf-8" />
        <title>%title%</title>
    </head>
    <body>
        <h1 id="title">%title%</h1>
        <pre class="brush:php;toolbar:false">%content%
登入後複製
*/

---------------------------------------------------------------------------------------------

php静态化页面方法,伪静态的也可以

这里是jetee.cn中静态化会员列表部分,根据这部分代码,可以理解静态化的一些概念。

静态化函数部分
/**
* @get list member item 获得静态化模板中要替换变量的内容。
* @param str: To replace the string
* @return string
*/
function get_staticize_replace_str()
{
$replace_str=""; //replace string
$query="select member_id,email_name from member";
$result=Mysql::query($query);
while($row=Mysql::fetch_assoc($result))
{
$replace_str.="

  • ".$row["member_id"]."";
    $replace_str.="
  • ".$row["email_name"]."
    ";
    }
    return $replace_str;
    }

    /**
    * @替换静态化模板中的变量生成静态化页面。
    * @
    * @return void
    */
    function staticize_list_member()
    {
    $replace_str=$this->get_staticize_replace_str();
    $templet=fopen(TENDAO_DIR."/templets/default/list_member.html","r");
    $new_file=fopen(TENDAO_DIR."/member/list_member.html","w");
    while(!feof($templet))
    {
    $ripe=fgets($templet);
    $ripe=str_replace("{member_items}",$replace_str,$ripe);
    fwrite($new_file,$ripe);
    }

    if (file_exists(TENDAO_DIR."/member/list_member.html")) {
    Msg("静态化会员列表成功!返回主页中……",TENDAO_ROOT,0,3000);
    exit();
    } else {
    Msg("静态化会员列表没有成功!返回主页中……",TENDAO_ROOT,0,3000);
    }

    fclose($templet);
    fclose($new_file);
    }

    /**
    * @静态化模板
    * @
    ......余下全文>>
     

    php对于页面静态化问题

    方法很多啊
    在php中 用include_once 就可以了
    只是包含文件的时候注意 你分离出去的文件只有

    中的部分
    再就是看好页面样式
    好的程序员 会将很多部分分离
    这样便于统一管理
     
  • 本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解鎖Myrise中的所有內容
    4 週前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    聊聊如何利用偽靜態來隱藏php後綴 聊聊如何利用偽靜態來隱藏php後綴 Mar 20, 2023 pm 06:46 PM

    偽靜態是指將動態的url位址透過偽裝成靜態位址的方式來存取的技術,而隱藏php後綴則是透過修改伺服器配置,讓存取動態頁面時不再顯示php後綴。這樣做的好處是可以增強網站的安全性,避免被破解,同時也更美觀,增加使用者體驗。本文將詳細介紹如何使用偽靜態隱藏php後綴,以提升網站的安全性與使用者體驗。

    優化網站SEO:偽靜態隱藏php後綴實踐 優化網站SEO:偽靜態隱藏php後綴實踐 Mar 07, 2024 pm 12:27 PM

    眾所周知,優化網站的SEO是網站營運中非常重要的一環。而眾多網站所使用的動態網頁系統(如PHP)預設的URL帶有拓展名稱(.php、.html等)會影響網站的SEO效果。為了提升網站的最佳化效果,常見的做法是將動態URL改為偽靜態URL以隱藏拓展名,提高網站的使用者體驗和搜尋引擎排名。本文將以「偽靜態隱藏php後綴」為主題,介紹如何在PHP網站中實現此最佳化,並

    提升網站安全性:偽靜態規則實作php後綴隱藏 提升網站安全性:偽靜態規則實作php後綴隱藏 Mar 07, 2024 am 11:33 AM

    提升網站安全性:偽靜態規則實現PHP後綴隱藏隨著網路的發展,網站安全性問題日益凸顯,其中包括對惡意攻擊的防範和用戶資料的保護。一個有效的措施是透過偽靜態規則來隱藏PHP後綴,這有助於提高網站的安全性和保護使用者隱私。在實現這一目標時,我們需要使用一些具體的程式碼範例來示範如何實現PHP後綴的隱藏。首先,我們要先了解什麼是偽靜態規則。偽靜態是一種將動態網頁連結轉

    利用ThinkPHP6實作偽靜態 利用ThinkPHP6實作偽靜態 Jun 20, 2023 pm 11:59 PM

    隨著網路的快速發展,網站的建置越來越受到人們的關注。而眾所皆知,優化網站的SEO能夠提高網站的排名及流量,而偽靜態就是網站SEO優化中不可或缺的一部分。在這篇文章中,我們將會利用ThinkPHP6實現偽靜態,並且進一步探討偽靜態的最佳化和實作過程。什麼是偽靜態?在講解偽靜態實作之前,先來了解什麼是偽靜態。偽靜態是一種透過網頁URL位址重寫,使其看

    從原理到實作:詳解偽靜態隱藏php後綴 從原理到實作:詳解偽靜態隱藏php後綴 Mar 07, 2024 pm 03:27 PM

    標題:從原理到實務:詳解偽靜態隱藏php後綴在網頁開發中,為了提高網站的安全性以及提升使用者體驗,隱藏URL中的檔案副檔名已成為一種常見的操作。其中,隱藏PHP檔案後綴是常用的技術手段,可以提高網站的安全性,增加網站的美觀性,也有助於搜尋引擎優化。本文將詳細解釋偽靜態隱藏PHP後綴的原理和實作操作,並提供具體的程式碼範例。一、偽靜態隱藏PHP後綴的原理偽靜態

    PHP關閉偽靜態代碼的方法詳解 PHP關閉偽靜態代碼的方法詳解 Mar 24, 2024 pm 03:12 PM

    PHP關閉偽靜態代代碼的方法詳解隨著網站開發的不斷發展,偽靜態代代碼成為了優化網站連結、提升用戶體驗的重要一環。而有時候,我們也需要關閉偽靜態代代碼,可能是為了調試或其他需求。在本文中,我們將逐步詳細討論如何關閉PHP中的偽靜態程式碼,並提供具體的程式碼範例。了解偽靜態代碼首先,讓我們先簡單了解一下什麼是偽靜態代碼。偽靜態代名詞是指透過URL重寫技術,將動

    PHP關閉偽靜態代碼的技巧分享 PHP關閉偽靜態代碼的技巧分享 Mar 23, 2024 pm 03:12 PM

    標題:PHP關閉偽靜態程式碼的技巧分享偽靜態程式碼是指一種讓動態產生的URL看起來像靜態頁面連結的技術。在使用PHP開發網站時,有時我們會遇到需要關閉偽靜態代碼的情況,例如在偵錯階段或為了解決一些URL重定向問題。本文將分享一些關閉偽靜態程式碼的技巧,並提供具體的程式碼範例。一、關閉偽靜態程式碼的方法透過.htaccess檔關閉在網站根目錄下找到.ht

    深入了解偽靜態:如何正確隱藏php後綴 深入了解偽靜態:如何正確隱藏php後綴 Mar 08, 2024 am 10:15 AM

    在當前網路技術日新月異的時代,網站的安全性和穩定性越來越受到人們的關注,其中隱藏網站的真實技術框架成為了許多站長關心的焦點之一。偽靜態技術,是一種常用的手段,可以有效提高網站的安全性,並有助於防止網站被爬蟲等惡意程式攻擊。本文將深入探討偽靜態技術中如何正確隱藏php後綴,並提供具體程式碼範例。一、偽靜態的概念偽靜態,即偽靜態化,是指在url位址中隱藏網站的

    See all articles