a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 學(xué)院 > 編程設(shè)計(jì) > 正文

關(guān)于動(dòng)態(tài)與靜態(tài)化頁面的問題

2023-05-20 20:23:42
字體:
供稿:網(wǎng)友

先談一下本文會(huì)用到的三種網(wǎng)頁格式,分別是HTML、SHTML、ASPX。它們各有特點(diǎn):

HTML即為本文的主角:靜態(tài)頁面。如果瀏覽器從服務(wù)器上請(qǐng)求一個(gè)HTML頁面,服務(wù)器把該頁面原封不動(dòng)地發(fā)送給瀏覽器。因此它的反應(yīng)速度是最快的,而且對(duì)于cpu、內(nèi)存等等的要求比較低。

ASPX是目前比較流行的動(dòng)態(tài)網(wǎng)頁格式。ASP .NET頁面的擴(kuò)展名為 .aspx。如果瀏覽器請(qǐng)求的是一個(gè)ASP .NET頁面,服務(wù)器在把它回送到瀏覽器之前會(huì)處理頁面中的所有可執(zhí)行代碼。動(dòng)態(tài)網(wǎng)頁的一個(gè)特點(diǎn)是信息交互、及時(shí)更新、頁面文件少、開發(fā)速度比較快。但是它的一個(gè)嚴(yán)重的問題是在訪問量比較大,而服務(wù)器的配置和資源比較有限的情況下,一些頻繁的讀寫數(shù)據(jù)庫、程序邏輯等等,會(huì)使得服務(wù)器負(fù)擔(dān)不起而當(dāng)機(jī)。

因此對(duì)于訪問量比較大的網(wǎng)站,網(wǎng)頁靜態(tài)化是一個(gè)比較可靠的解決方案。但是靜態(tài)頁面重復(fù)的內(nèi)容比較多,在信息量比較大的網(wǎng)站,全HTML可以說是無論對(duì)于開發(fā)者或者使用者,都是缺乏人性化的工作。例如我有一個(gè)顯示內(nèi)容的頁面,它有左右兩塊,右邊是文章內(nèi)容,可能是長(zhǎng)時(shí)間甚至永遠(yuǎn)不會(huì)變動(dòng)的,左邊是包含公告、新聞等的一些導(dǎo)航,更新速度比較快。那如果左邊的公告有了新的內(nèi)容,為了讓每個(gè)頁面的信息都準(zhǔn)確,那所有的頁面都要重新制作,這操作起來明顯很不方便。于是就有了SHTML的存在。SHTML的一個(gè)特點(diǎn)就是在服務(wù)器會(huì)做一定的預(yù)處理,使得它可以用include file的方式,把若干個(gè)文件包含進(jìn)來。例如上例的頁面,可以拆分為a.html和b.html,然后用c.shtml把這兩個(gè)文件包含進(jìn)來,那在更新的時(shí)候只需要更新a.html,而b.html不需要更新,這樣可以減少大量的制作工作。可能動(dòng)態(tài)網(wǎng)頁就是根據(jù)這個(gè)而產(chǎn)生的。在asp.net中,這是最基本的控件思想。以下是c.shtml的頁面代碼:

<div class=”contaier”>
<div id=”left”><!-- #include file=”a.html”--></div>
<div id=”right”><!-- #include file=”b.html”--></div>
</div>

因此,對(duì)于asp.net,可以采用輸出shtml頁面的方式,動(dòng)態(tài)生成靜態(tài)頁面,來解決性能問題。如何動(dòng)態(tài)生成靜態(tài)頁面,目前有兩種主流的方式,一種是做一些靜態(tài)頁面模板,然后把內(nèi)容填充替換,最后輸出文件。一種是利用HtmlTextWriter重寫AttributeCollection.Render。這兩種方法都可以在網(wǎng)上搜到相關(guān)的文章。但是在這里我要引發(fā)更深入的問題:

(1)靜態(tài)頁面怎么更新?能不能自動(dòng)更新?

(2)一些動(dòng)態(tài)的元素,如登陸、搜索、訪客,在靜態(tài)頁面中如何實(shí)現(xiàn)。

這里很可能就會(huì)用到ajax或者直接用Microsoft.XMLHTTP來做一些異步操作,最終可以解決上面的兩個(gè)問題,但是以我的經(jīng)驗(yàn)來說,總會(huì)覺得處理起來,特別別扭,特別艱難,很難保證能形成一種健壯的程序結(jié)構(gòu),以適應(yīng)隨時(shí)變化的客戶需求。

因此,我們回歸到asp.net,看aspx頁面能不能給靜態(tài)化一種解決方案,也就是我的目標(biāo):動(dòng)態(tài)靜態(tài)化。為此,先介紹作為這個(gè)思路的支持,需要用到asp.net的以下幾個(gè)特點(diǎn):

(1)aspx支持類似shtml的的語法,如果一個(gè)aspx頁面沒有帶代碼,那它跟shtml和html的靜態(tài)頁面的速度和效果是基本一致的。

(2)aspx支持前置代碼,即完全不要aspx.cs的后置代碼,只要在頂部把聲明后置代碼的那一段去掉,即<%@ Page Language="C#"%>用來聲明文件。然后直接把代碼寫在頁面:

<script runat="server">
 protected void Page_Load(object sender, EventArgs e)
 {
        if(!IsPostBack)
        {
            this.funcInit();
        }
 }
</script>

這樣代碼就會(huì)執(zhí)行,即不需要預(yù)先編譯,動(dòng)態(tài)編譯。

(3)aspx支持以ascx命名的各種用戶控件。

有了以上三點(diǎn)的支持,我們就可以實(shí)現(xiàn)動(dòng)態(tài)靜態(tài)化。首先。按動(dòng)態(tài)網(wǎng)站的開發(fā)方式,開發(fā)出一個(gè)網(wǎng)站。網(wǎng)站中的所有頁面的內(nèi)容都是由ascx的控件組成,.aspx中只有簡(jiǎn)單的html框架和用戶控件引用。做一個(gè)頁面或者一個(gè)winform工具實(shí)現(xiàn)以下靜態(tài)發(fā)布功能:

(1)錄入ascx控件信息,包括引用路徑、參數(shù)等等。

(2)點(diǎn)擊生成,則會(huì)自動(dòng)將上面錄入的控件信息,寫入一個(gè)跟它同名的aspx頁面上。訪問這個(gè)動(dòng)態(tài)生成的aspx頁面,可以得到他生成的文本內(nèi)容。

(3) 根據(jù)獲得的文本內(nèi)容,在指定目錄下生成.html或者.txt文件。

(4)自動(dòng)或手動(dòng)(頁面比較復(fù)雜的用手動(dòng))把a(bǔ)spx頁面中的這個(gè)ascx控件,改成的引用方式。

最后看一下結(jié)果:在開發(fā)環(huán)境下,依然是動(dòng)態(tài)頁面,一點(diǎn)都沒有改變。這對(duì)于后期維護(hù)修改有很大的幫助。由于增加了一個(gè)靜態(tài)發(fā)布的過程,在發(fā)布環(huán)境下,同是index.aspx的頁面,會(huì)被全部或者部分改成包含文件的shtml的模式。然后由于是aspx頁面,所以某些不需要靜態(tài)化的控件功能可以繼續(xù)正常使用。而所需要做的工作就是在前期錄入那些頁面控件的相關(guān)信息,以后修改完,就直接按發(fā)布就完成。以上就解決了aspx中的靜態(tài)化問題。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 黑人巨大精品欧美一区二区三区 | 荡女妇边被c边呻吟视频 | 综合久久久久 | 国产精品成av人在线视午夜片 | 激情视频一区二区三区 | 爱色av| 欧洲毛片| 久久精品1 | 伊人狠狠干 | 日本中文字幕一区二区 | 天堂a| 亚洲黄色高清视频 | 日韩电影免费在线观看中文字幕 | 国产精品自产拍在线观看桃花 | 免费成人小视频 | 国产精品久久婷婷六月丁香 | 国产欧美精品一区二区三区四区 | 看亚洲a级一级毛片 | 国产一区二区三区不卡在线观看 | 日本在线一二 | 一区二区三区精品视频 | 日韩专区在线播放 | 久久久久亚洲 | 日韩成人免费av | 日本天堂在线观看 | 国产精品久久久久毛片软件 | 免费观看日韩av | 国产精品女同一区二区 | 亚洲欧美综合精品久久成人 | 久久久久国产一区二区三区 | 亚洲日日操 | 最新久久精品 | 在线天堂新版最新版在线8 久久亚洲欧美日韩精品专区 | 精品国自产在线观看 | 日本在线观看视频 | 日日操天天操 | 91精品国产综合久久久久久蜜月 | 成人免费视频在线观看 | 亚洲三级黄 | www.狠狠干| 国产精品美女视频 |