PHP生成靜態頁面
引用自:
原作者:曉凱
PHP生成靜態頁面詳解 |
看到很多朋友在各個地方發帖問PHP生成靜態文章系統的方法,以前曾做過這樣一個系統,遂談些看法,以供各位參考。好了,我們先回顧一些基本的概念。 |
一,PHP指令碼與動態頁面。 PHP指令碼是一種伺服器端指令碼程式,可透過嵌入等方法與HTML檔案混合,也可以類,函式封裝等形式,以模板的方式對使用者請求進行處理。無論以何種方式,它的基本原理是這樣的。由客戶端提出請求,請求某一頁面 -----> WEB伺服器引入指定相應指令碼進行處理 -----> 指令碼被載入伺服器 -----> 由伺服器指定的PHP解析器對指令碼進行解析形成HTML語言形式 ----> 將解析後的HTML語句以包的方式傳回給瀏覽器。由此不難看出,在頁面傳送到瀏覽器後,PHP就不存在了,已被轉化解析為HTML語句。客戶請求為一動態檔案,事實上並沒有真正的檔案存在在那裡,是PHP解析而成相對應的頁面,然後傳送回瀏覽器。這種頁面處理方式被稱為“動態頁面”。 二,靜態頁面。 靜態頁面是指在伺服器端確實存在的僅含HTML以及JS,CSS等客戶端執行指令碼的頁面。它的處理方式是。由客戶端提出請求,請求某一頁面 ----> WEB伺服器確認並載入某一頁面 ----> WEB伺服器將該頁面以包的形式傳遞迴瀏覽器。由這一過程,我們對比一下動態頁面,即可方現。動態頁面需由WEB伺服器的PHP解析器進行解析,而且通常還需連線資料庫,進行資料庫存取操作,然後才能形成HTML語言資訊包;而靜態頁面,無須解析,無須連線資料庫,直接傳送,可大大減輕伺服器壓力,提高伺服器負載能力,大幅提供頁面開啟速度和網站整體開啟速度。但其缺點是,不能動態地對請求進行處理,伺服器上必須確實存在該檔案。 三,模板及模板解析。 模板即尚未填充內容html檔案。例如: 三,模板及模板解析。 模板即尚未填充內容html檔案。例如: temp.html
PHP處理: templetest.php
模板解析處理,即將經PHP指令碼解析處理後得出的結果填充(content)進模板的處理過程。通常藉助於模板類。目前較流行的模板解析類有phplib,smarty,fastsmarty等等。模板解析處理的原理通常為替換。也有些程式設計師習慣將判斷,迴圈等處理放進模板檔案中,用解析類處理,典型應用為block概念,簡單來說即為一個迴圈處理。由PHP指令碼指定迴圈次數,如何迴圈代入等,再由模板解析類具體實施這些操作。 好了,對比過靜態頁面與動態頁面各自的優劣,現在我們就來說說,如何用PHP生成靜態檔案。 PHP生成靜態頁面並不是指PHP的動態解析,輸出HTML頁面,而是指用PHP建立HTML頁面。同時因為HTML的不可寫性,我們建立的HTML若有修改,則需刪掉重新生成即可。(當然你也可以選擇用正則進行修改,但個人認為那樣做倒不如刪掉重新生成來得快捷,有些得不償失。) 言歸正傳。用過PHP檔案操作函式的PHP FANS知道,PHP中有一個檔案操作函式fopen,即開啟檔案。若檔案不存在,則嘗試建立。這即是PHP可以用來建立HTML檔案的理論基礎。只要用來存放HTML檔案的資料夾有寫許可權(即許可權定義0777),即可建立檔案。(針對UNIX系統而言,Win系統無須考慮。)仍以上例為例,若我們修改最後一句,並指定在test目錄下生成一個名為test.html的靜態檔案:
實際應用中常見問題解決方案參考: 一,文章列表問題: 在資料庫中建立欄位,記錄檔名,每生成一個檔案,將自動生成的檔名存入資料庫,對於推薦文章,只需指向存放靜態檔案的指定資料夾中的該頁面即可。利用PHP操作處理文章列表,存為字串,生成頁面時替換此字串即可。如,在頁面中放置文章列表的表格加入標記{articletable},而在PHP處理檔案中:
二,分頁問題。 如我們指定分頁時,每頁20篇。某子頻道列表內文章經資料庫查詢為45條,則,首先我們透過查詢得到如下引數:1,總頁數;2,每頁篇數。第二步,for ($i = 0; $i < allpages; $i++),頁面元素獲取,分析,文章生成,都在此迴圈中執行。不同的是,die ("建立檔案".$filename."成功!";這句去掉,放到迴圈後的顯示,因為該語句將中止程式執行。例:
大致思路如此,其中如其它資料生成,資料輸入輸出檢查,分頁內容指向等可酌情在頁面中加入。 在實際文章系統處理過程當中,還有許多問題有待考慮,與動態頁面不同之處,需注意的地方還有很多。但大致思路即是如此,其它方面可舉一反三而得。 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/786540/viewspace-986944/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- php 生成靜態頁面PHP
- PHP 實現頁面靜態化PHP
- php生成靜態檔案PHP
- Nginx 部署靜態頁面Nginx
- php的ob函式實現頁面靜態化PHP函式
- php頁面靜態化技術;學習筆記PHP筆記
- Asp.Net中動態頁面轉靜態頁面ASP.NET
- 用XML和XSLT來生成靜態的HTML頁面XMLHTML
- Laravel diary_靜態頁面Laravel
- 用typescript寫靜態頁面TypeScript
- java 做頁面靜態化Java
- Asp.net實現靜態頁-新增新聞生成靜態頁ASP.NET
- 關於php生成靜態問題PHP
- 靜態頁面佈局例項
- 靜態網頁簡易生成方法網頁
- .NET生成靜態頁面的方案總結
- 【Hover】ASP.Net生成靜態HTML頁!ASP.NETHTML
- 【靜態頁面架構】CSS之列表架構CSS
- 【靜態頁面架構】CSS之表格架構CSS
- 1.9 靜態頁面佈局例項
- 前端靜態頁面問題彙總前端
- Laravel頁面靜態化最佳實踐Laravel
- 頁面靜態化技術演進
- 前端靜態頁面快速迭代工具前端
- 實戰電商頁面1:靜態佈局
- Spring Boot返回靜態錯誤頁面Spring Boot
- 編寫靜態頁面經驗總結
- ASP.NET動態生成html頁面ASP.NETHTML
- PHP頁面構建器,使用php程式碼生成表單表格頁面,thinkphp laraval YiiPHP
- [xx專案前端靜態頁面二]財務主頁前端
- PHP Web頁面安全生成器指令碼PHPWeb指令碼
- 靜態庫生成
- 利用Django徒手寫個靜態頁面生成工具Django
- 【靜態頁面架構】CSS之盒子模型架構CSS模型
- 【靜態頁面架構】CSS之選擇器架構CSS
- 360安全衛士靜態頁面(html+css)HTMLCSS
- 使用vuepress搭建GitHub pages靜態部落格頁面VueGithub
- 關於論壇JSP頁面靜態化JS