導航:首頁 > 萬維百科 > cms高性能網頁靜態化技術

cms高性能網頁靜態化技術

發布時間:2020-10-14 22:46:54

1、對網站頁面進行靜態化處理

兩種一種是偽靜態,就是url 重寫,一種是你真的靜態化。偽靜態不較好實現

<add name="RewriteItem" virtualUrl="^~/Article/(\S+)/(\d+).html"
rewriteUrlParameter="ExcludeFromClientQueryString"
destinationUrl="~/User/ShowArticle.aspx?id=$2"
ignoreCase="true" />

類似於這樣配置一下就可以了
如果你想生成靜態的話,也會有兩種實現,一種是在 peage rander 的時候把html 保存成靜態,還有一種是直接寫一個模板,然後把模板中的內容替換成文章的標題你 內容 等 如 $$Title$$ $$Count$$ 用正則表達式

2、asp.net動態網頁靜態化主要有哪幾種技術?

只有兩種。第一種就是最簡單的,獲取頁面的html再寫入一個html。
第二種,就是做一個模版,不改動的內容寫如進去,其他的地方可以調用js。由js來動態控制顯示的結果,比如廣告,通告 等不定期會改進的地方。
如果用webclient再第一次訪問時自動生成html也是可以的。這個方法適用已經運營的一段時間的網站。如果每次都去生成的話就不必考慮了。

3、大型php網站全站靜態化怎麼實現? 如果有上萬個頁面每更改一小篇文章都要全部重新生成嗎?

用libTemplate實現靜態網頁的生成

作者:iwind

原來在dev-club發表的一篇文章,將怎麼用模板處理程序PHPlib 中的template.inc實現靜態網頁的生成,呵呵,居然被列入精華,並被多個網站轉載,想來這是榮幸。其實網上這方面的東西很多了,我上此發布的所謂IAMS( iwind 文章管理系統),裡面也有,有心人可以看一下。下面我只是簡要在總結一次。

現在一般說生成靜態網頁的方法有三種,一個是配置伺服器,大家可以到http://www.devarticles.com/c/b/PHP/ 去找找看,對於這個很多地方都有的。另外一個是用ob_函數控制輸出。方法如下:先用ob_start();打開輸出緩沖器,然後是對數據的分析,操作等等,跟著用ob_get_contents();獲取緩沖區的內容,然後再寫入文件。根據這個步驟,可以寫出以下程序:
<?php
ob_start();
//主體部分,數據操作,處理,輸出等等。。。
require」global.php」;
mysql_connect(「localhost」,」root」,」」);
…..
//獲取緩沖區內容
$contents=ob_get_contents();
//如果不想輸出任何東西,可以加上這句
ob_end_clean();
//寫入目的文件
$fp=@fopen($targetFile,」w+」) or die(「打開文件時出錯」);
fwrite($fp,$contents);
?>

這樣就把這個動態頁面的內容寫入了靜態頁面,$targetFile.像有的網站首頁內容很多,要調用n多個查詢語句時,不妨定時生成靜態網頁,既大幅提高了訪問速度,也減輕了伺服器負擔。

你可以看出來,我用ob_只是處理單個頁面,對於批量寫入或更新多個頁面,這個方法就不行了。這就是我要講的第三種方法,用模板。模板是個好東東,現在大家都或多或少在用它,建議還不會簡單模板處理的網友,花點時間去學它,一般的模板處理程序都很簡單的。用模板實現靜態網頁的生成是非常簡單的,方法就是獲取分析結果,把分析結果寫入文件。下面就以PHPlib中的template.inc來談談如果用模板生成靜態網頁。

一, 修改template.inc
加入以下的幾個函數:
//將分析結果保存到文件中去
function savetofile ($dir,$varname){
$data=$this-> finish($this-> get_var($varname));
$fp=fopen($dir, "w+ ");
fwrite($fp,$data);
}
//清除已賦值數組
function renew(){
$this-> varkeys=array();
$this-> varvals=array();
$this-> file=array();
}

第一個函數是結果保存到靜態文件中,第二個是把所有的模板分析變數都置為空,以免批量處理時相互影響。

二,實現靜態網頁生成。
<?php
$itpl-> set_file(「main」,」mian.tpl」);
//分析模板變數
…..
//分析main?mains
$tpl-> parse( "mains ", "main ");
//把分析結果mains存入main.html
$tpl-> savetofile( "main.html ", "mains ");
//置空
$tpl-> renew();//至關重要
?>

呵呵,是不是很簡單,main.html就是我們要的內容。下面是一個結合資料庫的例子,並用函數封裝了起來。
<?php
//$aid是資料庫中的文章id,$table是表名稱,$template是模板地址,$tpl是template.inc的一個實例
//每一個aid對應一個靜態網頁地址,都存在一個數據表中
//表的結構類似於 aid target title
// 1 a1.html ….
// 2 a2.html ….
// 3 a3.html ….
function staticInfo($aid){
global $table,$template,$tpl;
//查詢資料庫
$res=mysql_query(「select * from $table where aid=』$aid』」);
//取出數據
$array=mysql_fetch_array($res);
//讀靜態網頁地址,標題。
$target=$array[「target」];
$title=$array[「title」];
//分析模板
$tpl-> set_file(「main」,$template);
//把模板中的{title}變數換成$title
$itpl-> set_var(「title」,$title」);
//分析整個模板
$itpl-> set_var(「mains」,」main」);
//把mains寫入文件
$tpl-> savetofile($target, "mains ");
//置空
$tpl-> renew();
}
?>

這樣我們就可以用函數staticInfo()把我們想要處理的任一篇文章都生成靜態網頁。表$target里也可以包含文章內容,作者,來源等等,方法是一樣的。

三,更新靜態網頁
一篇文章加入資料庫後,由於一些原因我們總要修改一些文章。這時候,只要把相應的靜態網頁重新生成一次即可。這是非常方便的,因為表中已經有了靜態網頁的目標地址target欄位。

可以看出關鍵所在,一篇文章生成靜態網頁的關鍵所在就是$template(模板地址),$target(目標地址)。前者,我們可以先確定,後者可以由你隨心所欲的為每篇文章設置一個地址。常用的有1,時間戳 2,時分秒 3,根據文章id。因為這些重復的機會會非常小的。

四,批量生成靜態網頁.
有了單個文章生成的靜態網頁的函數了,那麼批量生成是非常簡單的。就是獲取所有的文章aid,然後套入函數即可。
<?php
//引用模板類
require」template.inc」;
//引入函數
require」functions.php」;
//一些變數的定義
$table=」art」;
$template=」template/info.tpl」;
$tpl=new Template(「.」);
//連接mysql,選擇資料庫
mysql_connect(「localhost」,」root』,」」);
mysql_select_db(「article」);
//發送查詢語句
$res=mysql_query(「select aid from $table」);
while($r=mysql_fetch_array($res)){
$aid=$r[「aid」];
//生成靜態網頁
staticInfo($aid);
}
//結束
echo」所有靜態網頁更新/生成成功」;
?>

上面就是完整的例子。我們做cms的流程可以如下:
1,記者發稿(把稿件內容放入資料庫)
2,編輯審查(如果他認為可以發布,那麼就可以把這些內容生成靜態網頁)
3,退回稿件(把生成的靜態網頁刪除,把資料庫中的內容刪除)

然後,我們訪問到的網站內容就都是靜態的了。一個問題就是,這種方法會不會佔用很多空間內?http://www.csdn.com.cn 有上千篇文章了,只佔用了20M空間。反過來說,如果你有10000篇文章的話,你不會吝嗇到只買200M的空間吧?

或許你對生成靜態的文章列表感到困惑,其實方法是一樣的,就是 計算頁碼? 分析每個頁碼的內容 ? 寫入文件。 分析每個頁碼的內容,當然是寫個函數咯,如果你一頁一頁的生成,恐怕被人嘲笑 ^_^。

靜態網頁不僅僅是可以減輕伺服器負擔,提高訪問速度,也可以方便地做鏡像網站,方便地備份,減少被攻擊損失程度,加快還原速度。當然靜態網頁也會給大家帶來諸多不便的地方,你需要在動態和靜態之間做出平衡,
也可以在靜態網頁中加入js調用的php代碼,來達到計數,即時更新等目的。(完)

4、誰知道joomla怎麼實現網頁靜態化啊?

我知道、首先空間是LINUX平台,再者,你到後台-全局設置-搜索引擎優化(SEO)設置。這里三個全選是就OK了。

5、如何實現網頁靜態化

方法一:使用現成的插件,比如:ISAPI_Rewrite、IIS Rewrite、Apache
HTTP伺服器的mod_rewrite等,它們都是基於正則表達式解析器開發的重寫引擎。它們的使用方法查看它們自帶的幫助即可。

方法二:自己寫的代碼實現動態網頁靜態化,方法也有好幾種:

1、創建FSO對象,利用此對象將所需的內容動態創建到文件中生成HTML頁面;

2、利用模板技術,將模板中特殊代碼的值替換為從表單或是資料庫欄位中接受過來的值 生成HTML文件;

3、使用Server.Transfer轉換技術,

方法三:使用HttpWebRequest請求客戶端的方式,獲取返回資源,生成靜態頁面。一般這樣只需要獲取網頁內容即可,其它資源可放置在伺服器上,自動載入。(註:此方法缺點明顯,需要大量更改匹配URL,建議慎用)

方法四:在asp中有IhttpMole介面。Ihttpmole可以簡單理解為一個可以在執行像.aspx,或者mvc中control/action前,添加我們自定義的操作的東西。

我們只需要編寫這么一個HttpMole就可以了,當用戶第一次請求asp處理時,我們可以在ihttpmole中攔截到這個請求,然後獲取到這次請求應該返回的html代碼,然後我們返回這些html給用戶,並保存剛才我們獲取到的html到文件內,當用戶下次請求時,我們只需要直接返回我們已經保存的html文件即可

6、cms 靜態化

具體怎麼做的話就說起來很麻煩了,現在大多網站使用的是偽靜態,雖然在手路上沒問題,但是在流量大的時候一樣很佔用伺服器的資源的。

CMS的話靜態做的比較好的個人認為是帝國CMS,是用PHP做的,可以完全生成靜態頁面。

是開源免費的,你可以下載了去研究下,PHP和JSP差異不是很大,很多業務流程都差不多的。

7、網站頁面靜態化有什麼好處

好處有以下幾點:

靜態網頁化可以提高速度 不管是asp、php、jsp、.net等動態程序,都需要讀取調用資料庫內容,才能顯示數據,相對於流量比較大,就增加了資料庫的讀取次數,佔用很大的伺服器資源,影響網站速度。而採用網站做成靜態的,直接除去了讀取資料庫的操作,減少了環節,還提高了網站反映速度。 

靜態網頁化有利於搜索引擎的收錄 從網站優化來分析,搜索引擎更喜歡靜態的網頁,靜態網頁與動態網頁相比,搜索引擎更喜歡靜的,更便於抓取,搜索引擎SEO排名更容易提高,目前一些門戶網站,如新浪、搜狐、網易、阿里巴巴、百度、慧聰等,頁面大多都採用靜態或偽靜態網頁來顯示,更便於搜索引擎抓取與排名。 

靜態網頁化有利於網站穩定 

1、從安全形度講,靜態網頁不宜遭到黑客攻擊,但也說不定,黑客能耐大著呢 

2、從網站穩定性來講,如果程序、資料庫出了問題,會直接影響網站的訪問,而靜態網頁就避免了如此情況,不會因為程序等,而損失網站數據,影響正常打開。

靜態頁面是網頁的代碼都在頁面中,不需要執行asp,php,jsp,.net等程序生成客戶端網頁代碼的網頁,靜態頁面網址中一般不含「?」、「=」、「&」等特殊符號。靜態頁面不能自主管理發布更新的頁面,如果想更新網頁內容,要通過FTP軟體把文件DOWN下來用網頁製作軟體修改(通過fso等技術例外) 常見的靜態頁面舉例:.html擴展名的、.htm擴展名的。 注意:靜態頁面並非網站上沒有動畫的就是靜態頁面。

8、如何實現網站的純靜態化,訪問頁面時生成和後台一鍵生成的區別是什麼?

如果要實現建議自己寫這頁面,不建議使用cms建站。不過現在很多cms系統都支持頁面靜態化,具體方法建議上網查詢。

9、網站建設為什麼要使用網頁靜態化技術

這個主要是滿足搜索引擎抓取的需求,靜態頁面比較容易讓百度等搜索引擎抓取。
但是,現在搜索引擎技術都在進步,如果沒有特殊需求,一般也可以動態化網頁。

與cms高性能網頁靜態化技術相關的知識