當(dāng)你的web站點(diǎn)采用asp技術(shù)建立的初期,可能感覺到的是asp動(dòng)態(tài)網(wǎng)頁技術(shù)帶來的便利性,以及隨意修改性、 自如的http控制。但是,隨著訪問量的增加,你一定會(huì)發(fā)現(xiàn)自己的站點(diǎn)訪問速度 " /> 狠狠色狠狠色狠狠五月ady,能看的黄页最新网站,国产午夜伦伦伦午夜伦

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Asp優(yōu)化,asp緩存技術(shù)

  一、何謂ASP緩存/為什么要緩存
  當(dāng)你的web站點(diǎn)采用ASP技術(shù)建立的初期,可能感覺到的是ASP動(dòng)態(tài)網(wǎng)頁技術(shù)帶來的便利性,以及隨意修改性、 自如的http控制。但是,隨著訪問量的增加,你一定會(huì)發(fā)現(xiàn)自己的站點(diǎn)訪問速度越來越慢,IIS重新啟動(dòng)得越來越頻繁。接下來,你一定想優(yōu)化ASP,諸如更換性能更優(yōu)異的數(shù)據(jù)庫、建立索引、編寫存儲(chǔ)過程等等。這些措施有些不需要增加成本壓力,有些則成本壓力很大(譬如叢access到SQL),而且效果還不一定。
  面對(duì)web訪問壓力,我認(rèn)為最經(jīng)濟(jì)的辦法是利用緩存優(yōu)化技術(shù)來實(shí)現(xiàn)緩解web的服務(wù)壓力。
  Web訪問量增加通常意味著以下資源需 求的快速增長:

  1.  網(wǎng)卡流量增加,需要消耗更多的CPU處理網(wǎng)絡(luò)流量和網(wǎng)絡(luò)I/O線程。
  2.  需要更頻繁的打開/關(guān)閉數(shù)據(jù)庫連結(jié)(如果使用數(shù)據(jù)庫技術(shù)—通常ASP都會(huì)采用數(shù)據(jù)庫作為數(shù)據(jù)存儲(chǔ)),嚴(yán)重消耗資源的事物數(shù)量、以及事務(wù)相互競(jìng)爭(zhēng)資源引起的 死鎖、會(huì)增加網(wǎng)絡(luò)I/O或者CPU消耗。
  3.  如果采用session的話,IIS為了維持狀態(tài),會(huì)消耗更多內(nèi)存,而內(nèi)存消耗可能會(huì)引發(fā)物理內(nèi)存不夠,引起物理內(nèi)存同輔存間的頻繁交換,從而引起代碼執(zhí) 行的停頓,web響應(yīng)阻滯。
  4.  由于訪問的不到及時(shí)響應(yīng),會(huì)引起網(wǎng)頁訪問故障,導(dǎo)致用戶刷新,從而加劇CPU、內(nèi)存等資源需求。

      實(shí)際 上,考慮通常的web應(yīng)用程序,很多時(shí)候的動(dòng)態(tài)代碼執(zhí)行是不必要的。


      二、ASP緩存的分類
      擅自總結(jié),ASP的緩存可以分為兩類:
      1、 文件緩存
      所謂文件緩存,就是根據(jù)邏輯判斷,一段時(shí)間內(nèi)某個(gè)ASP的特定執(zhí)行將不會(huì)有很大的變動(dòng),因而將內(nèi)容以靜態(tài) html的形式存放,然后以web的重定向技術(shù)讓客戶端訪問靜態(tài)文件,以達(dá)到減少CPU、數(shù)據(jù)庫資源等的需求。這樣的應(yīng)用很多,譬如很多論壇就是在回復(fù)貼 子的時(shí)候?qū)⒄麄€(gè)貼子重新生成一個(gè)靜態(tài)文件,然后進(jìn)行重定向的,例如 donews.com的論壇。該成靜態(tài)還有一個(gè)副作用(好處)–可以很容易被google等搜索引擎收錄。一些所謂新聞發(fā)布系統(tǒng)的都采用了此技術(shù)。
      2、 文件片斷緩存
      所謂文件緩存,也是基于邏輯判斷,某部分?jǐn)?shù)據(jù)(通常是需要消耗資源的大容量數(shù)據(jù)庫查詢?nèi)〉茫┰谝欢〞r(shí)間內(nèi)不會(huì)改變,所以我們可以將 這些數(shù)據(jù)利用文件的形式進(jìn)行存儲(chǔ),當(dāng)需要時(shí)候,可以通過讀取文件來獲取數(shù)據(jù),避免增加數(shù)據(jù)庫的負(fù)擔(dān)。例如,我們通常將一些數(shù)據(jù)以xml格式存儲(chǔ),然后利用 xslt技術(shù)實(shí)現(xiàn)顯示(xml處理通常需要大量CPU資源,所以通常是IE直接讀取xml到客戶端在客戶的CPU上進(jìn)行處理)。CSDN的論壇就是這樣處 理的。
      3、 主存緩存
      除此之外,還可以考慮在內(nèi)存中處理緩存,將需要及時(shí)響應(yīng)的內(nèi)容存儲(chǔ)在內(nèi)存中,一旦訪問需求,立即從快速的貯存中輸送 出去。如果極大量的訪問需求集中在幾個(gè)少量的頁面或者主存足夠多,我想采用主存緩存一定可以大幅度提高web訪問性能。

     

      三、如何 實(shí)現(xiàn)/使用緩存
      實(shí)現(xiàn)緩存需要考慮以下問題:
      1、 哪些頁面會(huì)在短時(shí)間內(nèi)不會(huì)改變?
      分析自己的站點(diǎn),這樣的頁面很多。譬如一個(gè)站點(diǎn) 通常都有新聞資訊類的欄目,這些欄目通常都是站點(diǎn)維護(hù)人員在一天的某個(gè)時(shí)間發(fā)布資料,之后很少改動(dòng)頁面。那么這些頁面就適合于采用靜態(tài)文件緩存。實(shí)際上, 所謂新聞發(fā)布系統(tǒng)就是這么做的,那么那也可以參考這些系統(tǒng)的思想改造自己的原有動(dòng)態(tài)ASP頁面。

      2、 那些頁面針對(duì)全部訪問者都采用同一個(gè)邏輯生成(也就是不區(qū)分訪問者)。
      除了新聞資訊之類的欄目所有訪問者都看一個(gè)界面外,論壇等消耗資源的應(yīng)用一 般也可以設(shè)計(jì)成統(tǒng)一邏輯生成(同一個(gè)貼子,張三李四看的都一樣),針對(duì)這類應(yīng)用頁面我們也可以采用靜態(tài)緩存來實(shí)現(xiàn)。也可以考慮將數(shù)據(jù)片斷化,利用腳本技術(shù) 在服務(wù)器處理能力之外也就是客戶端瀏覽器進(jìn)行處理。

      3、 采用緩存的代價(jià)和收獲。
      主要就是“空間換(響應(yīng))時(shí)間”。利用 緩存技術(shù)將之后頻繁需要的內(nèi)容進(jìn)行預(yù)處理,使之提高web服務(wù)器響應(yīng)能力,更重要贏得訪問者的歡心。代價(jià)就是web空間需求增加,同時(shí)又可能影響 到訪問效果。但我認(rèn)為適當(dāng)?shù)木彺妫抢笥诒椎摹?/p>

      4、 那些地方不適宜采用緩存
      動(dòng)態(tài)查詢頁面,每個(gè)人的查詢內(nèi)容 不一樣,所以顯示結(jié)果不大一樣,所以不大可能將查詢結(jié)果生成緩存,所以采用緩存較為復(fù)雜且緩存利用率底下,造成管理成本上什(假設(shè)你緩存了1000個(gè)查詢 關(guān)鍵字,那么管理這些關(guān)鍵字同緩存的對(duì)應(yīng)也是麻煩事)。

     

      四、實(shí)例分析
      假設(shè)一個(gè)建議論壇的原有布局如下:
      根目錄下:

    • default.ASP 首頁,一般是精華、推薦之類
    • listBorad.ASP 該文件列出全部分欄目的名稱和介紹,如果攜帶參數(shù)MainBID就表示要列出板塊下的欄目
    • listThread.ASP 該文件如果不攜帶任何參數(shù)表示列出全部的貼子,攜帶MainBID表示列出某塊的全部貼子。如果攜帶subBID表示列出具體欄目的貼子。如果攜帶 page參數(shù)表示分頁列出主題。
    • ViewThread.ASP 列出某個(gè)貼子內(nèi)容。我們假設(shè)貼子顯示為一個(gè)發(fā)言,任意跟貼全部列在后面。ID參數(shù)為要顯示的貼子。
    • Reply.ASP 回應(yīng)某個(gè)貼子,攜帶參數(shù)Id回應(yīng)某個(gè)貼子

      其它的暫不討論。
      以上,我們可以看到,如果全部是采用原始的ASP/php來做,那幾乎每一個(gè) ASP文件的執(zhí)行都需要數(shù)據(jù)庫操作,頻繁的查詢,多表查詢。要知道查詢數(shù)據(jù)庫最終會(huì)帶來性能的下降,響應(yīng)速度下降,帶給訪問者緩慢的瀏覽影響,不利于 web的質(zhì)量。更重要的是對(duì)于甲乙兩個(gè)人來將,他們?cè)L問ViewThread.ASP之類的如果ID一致,那么很多時(shí)候他們會(huì)看到同樣的內(nèi)容(他們的瀏覽 器收到的HTML代碼幾乎一樣),但是為了這“同樣的內(nèi)容”,服務(wù)器需要打開數(shù)據(jù)庫連結(jié)、查詢,讀取紀(jì)錄,顯示,關(guān)閉紀(jì)錄、數(shù)據(jù)庫連結(jié)。。。。以下列的消 耗服務(wù)器資源的操作,如果是更多的人來訪問,最終的結(jié)果是這些人加劇消耗服務(wù)器資源。實(shí)際上,這些為了“同樣的內(nèi)容”所做的重復(fù)勞動(dòng)是可以利用緩存技術(shù)進(jìn)行優(yōu)化避免的。

      譬如,在reply.ASP提交內(nèi)容后,我們立即調(diào)用生成靜態(tài)的功能,將整個(gè)貼子內(nèi)容存儲(chǔ)為 viewThread_xxxx.htm之類的靜態(tài)html文件,再通常情況下訪問viewThread.ASP?ID=xxxx的時(shí)候,系統(tǒng)自動(dòng) redirect到對(duì)應(yīng)的靜態(tài)文件viewThreadxxxx.htm去。這樣,當(dāng)一個(gè)貼子沒有最新發(fā)布時(shí)候,他始終是靜態(tài)內(nèi)容提供給瀏覽者;一旦有了 新的提交,將會(huì)更新到靜態(tài)文件中去,這樣,將會(huì)節(jié)省很多次數(shù)據(jù)庫操作,大大提高響應(yīng)速度。
      listBorad.ASP也可以實(shí)施靜態(tài)化。我們可以 分析其可能攜帶的參數(shù),將緩存文件名設(shè)定為listBoard_xx.htm,在增加新的欄目時(shí)候進(jìn)行更新listBoard_xxx.htm。 listThread.ASP也類似,只不過由于其參數(shù)更多,所以緩存文件也會(huì)很多。擊若要緩存listThread.ASP? subBID=xxx&page=2,那么對(duì)應(yīng)的靜態(tài)文件是listThread_xxx_p2.htm。default.ASP也一樣。
      那么如何判斷什么時(shí)候更新?在什么時(shí)機(jī)更新?
      討論listThread.ASP? subBID=xxx&page=2,我們?cè)趫?zhí)行l(wèi)istThread.ASP俄時(shí)候提取subID和page,然后探測(cè) listThread_xxx_p2.htm是否存在,如果不存在就調(diào)用靜態(tài)生成功能進(jìn)行生成該文件,最終重定向到此靜態(tài)文件。注意,此處的不存在就意味 著出現(xiàn)了新的內(nèi)容需要我們進(jìn)行更新。
      那如何造成文件不存在呢?

      刪除。我們?cè)诎l(fā)表一個(gè)新的貼子、刪除貼子、移動(dòng)貼子的時(shí)候我們可以將類似 listThread_xxx_p2.htm之類的靜態(tài)文件全部刪除。這樣就通知了何時(shí)要進(jìn)行緩存。
      現(xiàn)在還剩下一個(gè)問題,如何生成靜態(tài)文件?
      我們注意到,之前我們提到的“同樣的內(nèi)容”。我們可以將改造前的default.ASP、listThread.ASP等拷貝一個(gè)副本,取名為 default_d.ASP、listThread_2.ASP,且在同一個(gè)目錄中(理論上listThtrad.ASP?subID=123同 LISTtHREAD_D.ASP?SUBID=123的訪問結(jié)果會(huì)是同樣的內(nèi)容),這樣我們?cè)谛枰伸o態(tài)文件的邏輯中,通過WEB訪問請(qǐng)求的方式調(diào)用 改造前的副本,得到html代碼,并存儲(chǔ)為靜態(tài)文件。這個(gè)web請(qǐng)求實(shí)際上相當(dāng)于在任何真實(shí)瀏覽者訪問靜態(tài)內(nèi)容之前,由服務(wù)器自身現(xiàn)察看將會(huì)輸出的 html,然后返回這些代碼,利用文件操作功能存儲(chǔ)為靜態(tài)文件。這樣,緩存文件就在真正瀏覽者之前被創(chuàng)建。
      這樣的方案幾乎不觸動(dòng)原來的布局,幾乎 不會(huì)造成因?yàn)楦脑斐霈F(xiàn)404之類的錯(cuò)誤。其次,靜態(tài)文件也會(huì)幫助你的站點(diǎn)容易被被google之類的搜索引擎收錄。何樂而不為?

      最后,提醒,通過 web訪問,ASP編程環(huán)境下,很多人采用xmlhttp組件訪問,這會(huì)造成很多問題。xmlhttp自身會(huì)cache請(qǐng)求的資源,導(dǎo)致我們通過此組件請(qǐng) 求得到的內(nèi)容不是最新的,造成邏輯上的混亂。所以,應(yīng)當(dāng)選擇xml Server http對(duì)象或者winhttp組件來實(shí)現(xiàn)web請(qǐng)求資源。
      使用ASP中的緩存技術(shù)可以很大程度上提高你的網(wǎng)站性能,其實(shí)這些實(shí)現(xiàn)方法是非常的簡(jiǎn)單,它將說明如何在服務(wù)器上的緩存是如何工作以及你如何使用一種被稱為 斷開連接的ADO連接技術(shù)。
    在介紹這些技術(shù)之前先說明一下到底什么是ASP的緩存技術(shù)。
      所謂緩存其實(shí)就是在內(nèi)存中開辟一個(gè)用 來保存數(shù)據(jù)的空間,使用緩存你就不用頻繁的訪問你保存在硬盤上的數(shù)據(jù)了,靈活的使用緩存你就免去了心疼的看著可憐的硬盤飽受讀數(shù)據(jù)時(shí)的折磨了。當(dāng)你一旦執(zhí) 行了一個(gè)查詢動(dòng)作,并且將查詢結(jié)果放入緩存中后,你就可以很迅速的重復(fù)訪問這些數(shù)據(jù)了。而如果你不把數(shù)據(jù)放入緩存的話,當(dāng)你再次執(zhí)行這個(gè)查詢時(shí),服務(wù)器會(huì) 將進(jìn)程耗費(fèi)在從數(shù)據(jù)庫中獲取并排序上了。
    當(dāng)數(shù)據(jù)保存在緩存中時(shí),再次查詢時(shí)耗費(fèi)的時(shí)間主要是在顯示數(shù)據(jù)的時(shí)間上了。也就是說,我們不應(yīng)該把經(jīng)常需要改變的數(shù)據(jù)放到服務(wù)端的緩存中,我們應(yīng)該把改變少,但是又需要經(jīng)常訪問的數(shù)據(jù)放到緩存中。

      現(xiàn)在我們先討論ASP 在服務(wù)端使用緩存的技術(shù),過會(huì)再討論ASP如何在客戶端使用緩存的技術(shù)。
      當(dāng)你有大量的數(shù)據(jù)(靜態(tài)的,就是說變動(dòng)比較少的)需要顯 示給客戶端時(shí),你就可以考慮使用服務(wù)端的緩存技術(shù)了。這種技術(shù)尤其適用于那些顯示風(fēng)格一致性比較強(qiáng)的網(wǎng)站(呵呵,對(duì)于非主流的網(wǎng)站可不好用的說。)
      其實(shí)實(shí)現(xiàn)方法特別的簡(jiǎn)單,大家只要看看下面這個(gè)簡(jiǎn)單的例子就明白了。
      這是一個(gè)用來顯示書籍分類的例子程序
      DisplayBooks.ASP 文件:

    < %@ LANGUAGE=JavaScript % >< html >< body >< form method=post >書籍分類; < %= getBooksListBox() % >< p>< input type=submit >< %function getBooksListBox(){BooksListBox = application(“BooksListBox”)if (BooksListBox != null) return BooksListBox;crlf = String.fromCharCode(13, 10)BooksListBox = “< select name=Books>” + crlf;SQL = “Select * FROM Books orDER BY Name”;cnnBooks = Server.CreateObject(“ADODB.Connection”);cnnBooks.Open(“Books”, “Admin”,”");rstBooks = cnnBooks.Execute(SQL);fldBookName = rstBooks(“BookName”);while (!rstBooks.EOF){BooksListBox = BooksListBox + ” < option>” +fldBookName + “” + crlf;rstBooks.MoveNext();}BooksListBox = BooksListBox + “”Application(“BooksListBox”) = BooksListBoxreturn BooksListBox;}% >

    NET技術(shù)Asp優(yōu)化,asp緩存技術(shù),轉(zhuǎn)載需保留來源!

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

    主站蜘蛛池模板: 无码欧美喷潮福利XXXX | 亚洲激情一区 | 久久中文字幕无码A片不卡 久久中文字幕人妻熟AV女蜜柚M | 欧美日韩高清一区二区三区 | 国内精品伊人久久久影院 | 国产精品日本不卡一区二区 | 男总裁憋尿PLAY灌尿BL | 3dbdsm变态videos高清 | 妖精视频免费高清观看 | 亚洲专区中文字幕视频专区 | 波多结衣一区二区三区 | 亚洲理论片在线中文字幕 | QVOD理论| 精品性影院一区二区三区内射 | 亚洲国产日韩制服在线观看 | 久久国产视频网站 | 挺进老师的紧窄小肉六电影完整版 | caoporn 免费视频 | 亚洲精品国产熟女久久久 | 99在线国产视频 | 亚洲视频中文字幕在线观看 | 高清无码中文字幕影片 | 亚洲国产精品综合久久一线 | 亚洲精品电影天堂网 | 国产精品卡1卡2卡三卡四 | AV无码久久无遮挡国产麻豆 | p影院永久免费 | 四虎永久在线精品国产 | 高h 纯肉文| 美丽的姑娘BD在线观看 | 亚洲午夜AV久久久精品影院色戒 | 亚洲AV无码乱码A片无码蜜桃 | 亚洲国产在线综合018 | 视频一区国产在线第一页 | 疯狂第一次国语 | 世界上第一个得抑郁症的人是谁 | 日韩经典欧美一区二区三区 | 欧美18在线| 越南女 黑人 痛苦 大叫 | 国产欧美精品一区二区色综合 | 国产白浆视频在线播放 |