亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用XML結合數據庫,給服務器減負。

2019-11-18 20:13:36
字體:
來源:轉載
供稿:網友
到了今天,數據庫已經成了網站的靈魂,可以說,沒有對數據進行集中管理
就算不上是一個真正的網站。而asp加數據庫,更成了主流中的主流,網站里的用戶登錄,
論壇,留言本都成了它們用武之地,從前用51個文件才能做成的事,現在用2個文件就可以
了,但ASP加數據庫,卻并非完美,尤其是與服務器進行頻繁的交互方面。

比如按ASP+數據庫的方案,我們完全可以將那位敬業的站長的工作簡化為兩個文件:一個
數據庫文件,記錄小說的所有章節;另一個ASP文件,用來讀取數據庫的內容;當客戶端
點擊“下一章”的時候便可以瀏覽下一章內容……的確,這看似很直觀方便,但不可乎視
的是,每當我們瀏覽下一章的時候,我們的瀏覽器都會自動自覺地去訪問一次數據庫,因
此,當有訪問者耐心地將這本小說讀完的時候,我們的數據庫已經與它親密接觸了49次了。
那如果同時有N個49次呢?誰還能保證自己的服務器仍然能從容地應付所有請求?特別是一
些提供了搜索數據,將數據分頁顯示的網站,服務器不堪重負的現象更應該重視,因為查詢
結果有N頁,就表示訪問者遍覽所有結果需要連接服務器打N次。

如果現在你說“N次就N次吧,咱無所謂”,那么你應該馬上用鼠標點擊瀏覽器的“后退”
因為我下面將談到一些垃圾內容。當然,如果你也想讓你的數據庫程序變成“N頁記錄,
一次交互”的話,歡迎繼續看下去,我們將一起探討xml與數據庫的整合運用。

其實XML并不像許多人想的那樣空有名聲,而無實際用途。我不知道你是不是也這么想,但
在網上很難見到一些真正應用了XML的網站,這是事實?,F在,我列出幾條獨有XML才能實
現的案例,希望能夠以此證明XML的實用與強大:

1. 1個XML文件 + 1個普通HTML文件 = 49章小說分章顯示
適用于那些不支持ASP的普通主頁空間,這種情況下XML完全代替了數據
庫,很經典地實現了數據與排版的分離。XML與HTML完全分工。

2. 1個XML文件 + 1到N個ASP文件 = 留言本/論壇
適用于那些禁用了文件組件FileSystemObject與數據庫組件的ASP主頁空
間,不用文件存取與數據庫,用XML照樣可以做留言本與論壇,并實現數
據庫的所有功能。
(我在本論壇發表的“第三種途徑-----基于XML的ASP留言板”中,詳細
地闡述了這一技術,有興趣的話可以在論壇中搜索此文。)

3. 1個數據庫 + 1個嵌入了XML的ASP文件 = “N頁記錄,一次交互”

可以說,這幾種技術都體現了XML的精髓。特別是第2種技術,XML充分證明了自身的優勢——
既有數據庫的強大又具備文本文件的輕巧(一個.mdb文件上百K,而一個.xml文件才幾k,而且
數據庫文件修改要借助專門軟件或相對應的ASP程序,但xml文件,記事本足矣。)更讓人興
奮的是,XML完全可以拋開文件存取組件與數據庫組件實現數據的寫入讀取,甚至新建文件。
而我們將要談到的“N頁記錄,一次交互”則更是XML對數據庫的全面超越。

先看下面這個XML文件:

<?xml version="1.0" encoding="gb2312"?>
<在線播放>
<歌曲>
<歌名>Hello Goodbye</歌名>
<URL>ftp://61.139.37.148/music/songs01/english/beatles/hellogoodbye.mp3</URL>
<演唱者>The Beatles</演唱者>
<歌詞>You say yes, I say no</歌詞>
</歌曲>
<歌曲>
<歌名>Yesterday</歌名>
<URL>http://www.mayia.com/beatlescom/beatles/mp3/mp3/yesterday.mp3</URL>
<演唱者>The Beatles</演唱者>
<歌詞>Yesterday, all my troubles seemed so far away</歌詞>
</歌曲>
</在線播放>
試試看,用記事本編輯一下這個文件,并保存文件名為songList.xml,然后用IE瀏覽器打開
這個文件,如果沒有語法錯誤,即可在瀏覽器中顯示XML所獨有的樹狀頁面。
點擊后面的鏈接查看效果:      XML文件

這就是一個合法的XML文檔,而XML文檔的規則與格式也非常自由,如果你要創建一個新的XML
文件,只需一字不改地照寫第一行“<?xml version="1.0" encoding="gb2312"?>”,而后面
的標簽與標簽之間的text就可以很隨意,僅僅遵守以下規則即可:

1.首標簽與尾標簽必須對應,可以重復,但不可以嵌套。
2.標簽的命名規則與java/C/C++等程序語言的變量命名規則相似,區分大小寫。
3.一個文檔只能有一個根元素,如實例中的“<在線播放>”
4.唯一的關鍵字“XML”,標簽不能以這三個字母開頭。
5.如果文檔與規則有所沖突,將導制XML文檔在瀏覽器中無法正常顯示,亦表示非合法的XML
 文檔。

OK,我們已經知道怎樣寫一個合法的XML文檔了,下一步我們將開始探討將XML文件嵌入到HTML
文件中,并用VBScr我們設置了XML的ID:xmlFile,以便后面的腳本語言訪問該XML對象。

“set xml=xmlFile.recordset”      語句創建了一個可以訪問XML的游標。這個游標
類似于ASP中的RecordSet對象,所擁有的方法與后者也幾乎是完全一樣的。如:

當我們用set xml=xmlFile.recordset創建了一個名為xml的數據游標后,我們就可以使
用以下方法與屬性:

xml.MoveFirst() 移到第一條記錄
xml.MoveNext() 移到下一條
xml.Move
CSS">
<!--
.input 
{
background-color: #000000;
border: #000000;
color: #FF9900;
}
-->
</style>
</head>

<body bgcolor="#000000" text="#FF9900">
<% ''''''''''''''''''''連接數據庫'''''''''''''''''''''''''
set songCon = Server.CreateObject("ADODB.connection")
conPath = Server.MapPath("songList.mdb")
conStr = "DRIVER={Microsoft access Driver (*.mdb)}; dbq="
songCon.open(conStr & conPath)
set rs = Server.CreateObject("ADODB.Recordset")
rs.open "Select * from songList",songCon,3,3
%>

<!--動態生成內嵌式XML文檔,"在線播放"是根標記-->
<xml id = "xmlFile">
<在線播放>
<% 
If not rs.eof then
while not rs.eof
%>
<歌曲>
<歌名><%= trim(rs("song_name")) %></歌名>
<URL><%= trim(rs("song_url")) %></URL>
<演唱者><%= trim(rs("songer")) %></演唱者>
<歌詞><%= trim(rs("song_lyrics")) %></歌詞>
</歌曲>
<% 
rs.movenext
wend
End If 
%>
</在線播放>
</xml>
<div id="Layer1" style="position:absolute; width:500px; height:59px; z-index:1; left: 118px; top: 4px;">
 <!--Window Media Player控件--> 
 <OBJECT classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95" width="500" height="43" id="player" style="WIDTH: 500px; HEIGHT: 43px" VIEWASTEXT>
   <PARAM NAME="AudioStream" VALUE="-1">
<PARAM NAME="AutoSize" VALUE="0">
<PARAM NAME="AutoStart" VALUE="-1">
<PARAM NAME="AnimationAtStart" VALUE="-1">
<PARAM NAME="AllowScan" VALUE="-1">
<PARAM NAME="AllowChangeDisplaySize" VALUE="-1">
<PARAM NAME="AutoRewind" VALUE="0">
<PARAM NAME="Balance" VALUE="0">
<PARAM NAME="BaseURL" VALUE="">
<PARAM NAME="BufferingTime" VALUE="5">
<PARAM NAME="CaptioningID" VALUE="">
<PARAM NAME="ClickToPlay" VALUE="-1">
<PARAM NAME="CursorType" VALUE="0">
<PARAM NAME="CurrentPosition" VALUE="-1">
<PARAM NAME="CurrentMarker" VALUE="0">
<PARAM NAME="DefaultFrame" VALUE="">
<PARAM NAME="DisplayBackColor" VALUE="0">
<PARAM NAME="DisplayForeColor" VALUE="16777215">
<PARAM NAME="DisplayMode" VALUE="0">
<PARAM NAME="DisplaySize" VALUE="4">
<PARAM NAME="Enabled" VALUE="-1">
<PARAM NAME="EnableContextMenu" VALUE="-1">
<PARAM NAME="EnablePositionControls" VALUE="-1">
<PARAM NAME="EnableFullScreenControls" VALUE="0">
<PARAM NAME="EnableTracker" VALUE="-1">
<PARAM NAME="Filename" VALUE="">
<PARAM NAME="InvokeURLs" VALUE="-1">
<PARAM NAME="Language" VALUE="-1">
<PARAM NAME="Mute" VALUE="0">
<PARAM NAME="PlayCount" VALUE="1">
<PARAM NAME="PreviewMode" VALUE="0">
<PARAM NAME="Rate" VALUE="1">
<PARAM NAME="SAMILang" VALUE="">
<PARAM NAME="SAMIStyle" VALUE="">
<PARAM NAME="SAMIFileName" VALUE="">
<PARAM NAME="SelectionStart" VALUE="-1">
<PARAM NAME="SelectionEnd" VALUE="-1">
<PARAM NAME="SendOpenStateChangeEvents" VALUE="-1">
<PARAM NAME="SendWarningEvents" VALUE="-1">
<PARAM NAME="SendErrorEvents" VALUE="-1">
<PARAM NAME="SendKeyboardEvents" VALUE="0">
<PARAM NAME="SendMouseClickEvents" VALUE="0">
<PARAM NAME="SendMouseMoveEvents" VALUE="0">
<PARAM NAME="SendPlayStateChangeEvents" VALUE="-1">
<PARAM NAME="ShowCaptioning" VALUE="0">
<PARAM NAME="ShowControls" VALUE="-1">
<PARAM NAME="ShowAudioControls" VALUE="-1">
<PARAM NAME="ShowDisplay" VALUE="0">
<PARAM NAME="ShowGotoBar" VALUE="0">
<PARAM NAME="ShowPositionControls" VALUE="-1">
<PARAM NAME="ShowStatusBar" VALUE="0">
<PARAM NAME="ShowTracker" VALUE="-1">
<PARAM NAME="TransparentAtStart" VALUE="0">
<PARAM NAME="VideoBorderWidth" VALUE="0">
<PARAM NAME="VideoBorderColor" VALUE="0">
<PARAM NAME="VideoBorder3D" VALUE="0">
<PARAM NAME="Volume" VALUE="0">
<PARAM NAME="WindowlessVideo" VALUE="0">
</OBJECT>
</div>


<div id="Layer3" style="position:absolute; width:200px; height:115px; z-index:3; left: 120px; top: 140px;"><img src="P_online.jpg" width="300" height="170"></div>
<div id="Layer4" style="position:absolute; width:191px; height:54px; z-index:4; left: 430px; top: 199px;"> 
 <table width="190" height="52" border="1" align="right" bordercolor="#000000" bgcolor="#FF9900">
   <tr>
     <td height="23" valign="bottom"> 
       <div align="center"></div>
         
       <div align="right">
         <input name="btnPre" type="button" disabled="true" id="btnPre" value="上一首">
       </div></td>
   </tr>
   <tr>
     <td valign="top">
<div align="right"> 
         <input name="btnNext" type="button" id="btnNext" value="下一首">
       </div></td>
   </tr>
 </table>
</div>
<div id="Layer2" style="position:absolute; width:503px; height:58px; z-index:2; left: 120px; top: 67px;"> 
 <table width="501" border="1">
   <tr> 
     <td width="100"><font color="#FFFFFF" size="2">播放內置歌曲:</font></td>
     <td width="317">
  <SELECT name="list" size="1" id="list" style="WIDTH: 328px; BACKGROUND-COLOR: darkorange">
 <!--用循環來初始化下拉列表-->
         <script language="VBScript">
set xml=xmlFile.recordset
xml.MoveFirst
dim num
for num=0 to xml.RecordCount-1
document.write("<OPTION value="&xml("url")&">"&xml("歌名")&"</OPTION>")
xml.MoveNext
next
xml.MoveFirst 
</script>
  </SELECT>
 </td>
     <td width="62"><div align="right">
         <input name="btnLAN" type="button" id="btnLAN" value="播放">
       </div></td>
   </tr>
   <tr> 
     <td><font color="#FFFFFF" size="2" >播放網絡歌曲:</font></td>
     <td><input name="textURL" type="text" id="textURL" style="WIDTH: 328px; BACKGROUND-COLOR: darkorange;color: #000000;"></td>
     <td><div align="right">
         <input name="btnNET" type="reset" id="btnNET" value="播放">
       </div></td>
   </tr>
 </table>
</div>
<div id="Layer5" style="position:absolute; width:500px; height:20px; z-index:5; left: 120px; top: 320px;"> 
 <p><font color="#FFFFFF" size="2">正在播放: 
   <input name="textSonger" type="text" class="input" id="textSonger" size="15">
   演唱的 
   <input name="textSongName" type="text" class="input" id="textSongName" size="35">
   </font></p>
</div>
<div id="Layer6" style="position:absolute; width:500px; height:150px; 
z-index:6; left: 120px; top: 349px;">
 <textarea name="area" cols="68" rows="15" id="area" 
  style="BORDER-RIGHT: white double; BORDER-TOP: white double; 
BORDER-LEFT: white double;COLOR: #000000; DIRECTION: ltr; 
BORDER-BOTTOM: white double;BACKGROUND-COLOR: darkorange; 
TEXT-ALIGN: left">
 </textarea>
</div>

<!--各按鈕的單擊事件-->
<script language="VBScript">
sub play()
textSonger.value=xml("演唱者")
textSongName.value=xml("歌名")
textURL.value=""
area.value=xml("歌詞")
player.filename=xml("URL")

if xml.AbsolutePosition=xml.recordcount then
btnNext.disabled=true
else
btnNext.disabled=false
end if

if xml.AbsolutePosition=1 then
btnPre.disabled=true
else
btnPre.disabled=false
end if
end sub

sub btnLAN_onclick
xml.MoveFirst
while xml("URL")<>list.value
xml.MoveNext
wend
call play()
end sub

sub btnNET_onclick
player.filename = textURL.value
textSonger.value = ""
textSongName.value = ""
area.value = "自定義網絡歌曲"
end sub

sub btnPre_onclick
xml.MovePrevious
list.selectedIndex = list.selectedIndex - 1
call play()
end sub

sub btnNext_onclick
xml.MoveNext
list.selectedIndex = list.selectedIndex + 1
call play()
end sub
</script>
</body>
</html>
現在,你知道怎么給服務器減負了嗎?^-^

本文旨在探討,如有錯漏,歡迎指正與討論。
感謝站長miles這些日子來不倦的幫助,無以回報,唯有灌上此文。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性videos高清精品| 欧美日本黄视频| 国产精品扒开腿做| 91视频88av| 日本中文字幕久久看| 亚洲精品v天堂中文字幕| 日本一区二区不卡| 亚洲精品国产拍免费91在线| 日韩中文字幕在线视频| 亚洲电影第1页| 久久天天躁夜夜躁狠狠躁2022| 97久久精品人人澡人人爽缅北| 色爱av美腿丝袜综合粉嫩av| 成人动漫网站在线观看| 日韩专区在线播放| 国产精品日韩欧美| 日韩精品极品视频| 亚洲精品国产综合区久久久久久久| 国产精品日韩欧美| 欧美性猛交xxxx乱大交蜜桃| 日韩免费高清在线观看| 日产精品99久久久久久| 亚洲91av视频| 欧美电影免费观看大全| 成人免费观看49www在线观看| 91中文精品字幕在线视频| 国语自产精品视频在线看一大j8| 亚洲欧美综合另类中字| 欧美国产日韩中文字幕在线| 按摩亚洲人久久| 欧美性生交大片免费| 久热精品在线视频| 精品国产一区二区三区久久狼黑人| 久久久久久久亚洲精品| 欧美激情精品久久久| 不卡在线观看电视剧完整版| 91在线视频九色| 91久久精品一区| 国产精品狼人色视频一区| 亚洲欧美三级在线| 国产欧美一区二区白浆黑人| 欧美日韩美女视频| 日本午夜人人精品| 中文日韩在线视频| 精品国产一区二区三区久久狼5月| 成人444kkkk在线观看| 亚洲黄色av网站| 精品成人久久av| 亚洲乱码国产乱码精品精| 亚洲欧美一区二区三区久久| 91精品久久久久久久久久另类| 久久久精品国产亚洲| 另类天堂视频在线观看| 亚洲欧美日韩中文在线| 欧美激情一区二区三区久久久| 欧美日韩中文在线| 欧美日韩综合视频| 亚洲欧美在线x视频| 日本成人免费在线| 国产精品青草久久久久福利99| 欧美日本啪啪无遮挡网站| 91免费看片在线| 日本伊人精品一区二区三区介绍| 国产精品视频免费在线观看| 成人a免费视频| 成人黄色av网| 5252色成人免费视频| 中文在线资源观看视频网站免费不卡| 69久久夜色精品国产69| 亚洲国产欧美自拍| 亚洲r级在线观看| 久久人人爽人人爽人人片av高请| 91久久精品国产91性色| 欧美日韩国产一区在线| 欧美精品福利在线| 国产精品久久婷婷六月丁香| 久久九九全国免费精品观看| 欧美大成色www永久网站婷| 久久久久久久久久av| 国产成人精品网站| 国产日韩综合一区二区性色av| 国内精品模特av私拍在线观看| 国产精品电影一区| 中文字幕亚洲在线| 久久在线视频在线| 精品国产一区二区三区四区在线观看| 久青草国产97香蕉在线视频| 欧美日韩亚洲国产一区| 永久免费看mv网站入口亚洲| 4p变态网欧美系列| www.久久草.com| 91国内免费在线视频| 色哟哟网站入口亚洲精品| 永久免费看mv网站入口亚洲| 日韩中文字幕在线| 一区二区三区 在线观看视| 国产成人亚洲综合91| 亚洲欧美日韩网| 欧美激情在线观看| 成人午夜在线影院| 91精品久久久久久久久| 青青久久av北条麻妃黑人| 欧美电影免费观看高清| 久久精品久久久久久国产 免费| 黄色成人av在线| 国产精品视频成人| 亚洲第一网站免费视频| 亚洲性无码av在线| 日韩最新免费不卡| 亚洲色图第一页| 国产精品亚洲片夜色在线| 影音先锋欧美精品| 人人爽久久涩噜噜噜网站| 国内精品一区二区三区四区| 在线国产精品视频| 91精品免费久久久久久久久| 国产精品久久久久99| 综合国产在线观看| 国产精品嫩草影院一区二区| 亚洲综合视频1区| 亚洲美女动态图120秒| 亚洲free嫩bbb| 91av在线影院| 日韩精品福利网站| 久久久久久国产精品| 91久久在线视频| 国产一区二区日韩精品欧美精品| 中文字幕欧美日韩va免费视频| 91性高湖久久久久久久久_久久99| 欧美激情久久久| yellow中文字幕久久| 欧美专区第一页| 亚洲精品国产免费| 在线成人激情视频| 久99九色视频在线观看| 国产在线精品一区免费香蕉| 国产成人福利网站| 成人av在线网址| 日韩高清电影免费观看完整版| 亚洲精品久久7777777| 久久久欧美精品| 国产日韩精品电影| 国产美女主播一区| 国产精品一区二区在线| 欧美激情亚洲另类| 日韩av在线免播放器| 欧美日韩中文字幕综合视频| 亚洲国产高清福利视频| 亚洲成avwww人| 情事1991在线| 久久久免费电影| 久久精品亚洲一区| 国产成人亚洲综合| 欧美大尺度电影在线观看| 岛国av在线不卡| 国产精品高清在线| 伊人久久男人天堂| 另类少妇人与禽zozz0性伦| 色偷偷888欧美精品久久久| 亚洲欧美三级在线| 91精品久久久久久久| 国产又爽又黄的激情精品视频| 亚洲美女av黄| 国产一区二区三区网站|