<table> <% For Each fld in rs.Fields %> <th><% = fld.Name %></th> <% Next While Not rs.EOF %> <tr> <% For Each fld in rs.Fields %> <td><% = fld.Value %></td> <% Next </tr> <% rs.MoveNext Wend %> </table>
<table> <% For each fld in rs.Fields Response.Write (?<th>? & fld.Name & ?</th>? & vbCrLf) Next While Not rs.EOF Response.Write (?<tr>?) For Each fld in rs.Fields %> Response.Write(?<td>? & fld.Value & ?</td>? & vbCrLf) Next Response.Write ?</tr>? Wend %> </table>
IIS 5.0 引入了綁定到組件類型庫(kù)的功能。這可使您引用類型庫(kù)一次,并將其用在每個(gè) ASP 頁(yè)面上。每個(gè)頁(yè)面不會(huì)產(chǎn)生編譯常量文件的開銷,且組件開發(fā)人員不必建立 VBScript#_include 文件以在 ASP 上使用。
技巧 19: 利用瀏覽器的驗(yàn)證功能 現(xiàn)今的瀏覽器對(duì)一些高級(jí)功能如 xml、DHTML、java 小程序和遠(yuǎn)程數(shù)據(jù)服務(wù)提供支持。盡可能使用這些功能。所有這些技術(shù)都可以執(zhí)行客戶機(jī)端驗(yàn)證和數(shù)據(jù)緩存,免去了到 Web 服務(wù)器的往返。如果您在運(yùn)行一個(gè)智能瀏覽器,那么瀏覽器就能為您進(jìn)行一些驗(yàn)證(例如,在執(zhí)行 POST 之前,檢查信用卡校驗(yàn)和是否有效)。盡可能使用這一功能。通過(guò)減少客戶-服務(wù)器之間的往返,可降低 Web 服務(wù)器上的負(fù)載,并能減少網(wǎng)絡(luò)通信量(雖然發(fā)送到瀏覽器的第一個(gè)頁(yè)面可能比較大)以及服務(wù)器訪問(wèn)的任何后端資源。此外,用戶不必像住常一樣讀取新頁(yè),從而用戶的感覺會(huì)好一些。這樣做并不意味著您可以不進(jìn)行服務(wù)器端驗(yàn)證 - 您還應(yīng)始終進(jìn)行服務(wù)器端驗(yàn)證。這可以防止由于某種原因(如黑客,或?yàn)g覽器不運(yùn)行客戶機(jī)端驗(yàn)證例程)客戶機(jī)產(chǎn)生錯(cuò)誤的數(shù)據(jù)。
人們已經(jīng)進(jìn)行了大量的工作,開發(fā)“獨(dú)立于瀏覽器”的 HTML。正是由于這種憂慮,開發(fā)人員不愿再使用流行的瀏覽器功能,但這些功能本可以改善性能。對(duì)于一些真正的高性能站點(diǎn),必須關(guān)心瀏覽器“訪問(wèn)”問(wèn)題,一個(gè)好的策略是優(yōu)化頁(yè)面,使其適應(yīng)流行的瀏覽器。使用瀏覽器功能組件,可以在 ASP 中方便地檢測(cè)到瀏覽器功能。Microsoft FrontPage 等工具有助于設(shè)計(jì)適合于瀏覽器和指定 HTML 版本的代碼。參見 When is Better Worse?Weighing the Technology Trade-Offs,以了解更進(jìn)一步的討論。
s = ?? For i = Asc(?A?) to Asc(?Z?) s = s & Chr(i) Next
在第一次迭代中,您獲得了一個(gè)字符的字符串 ?A?。在第二次迭代中,VBScript 必須重新分配字符串并將兩個(gè)字符 (?AB?) 復(fù)制到 s 中。在第三次迭代中,它還必須再次重新分配 s 并將三個(gè)字符復(fù)制到 s 中。在 N 次(第 26 次)迭代中,它必須重新分配并將 N 個(gè)字符復(fù)制到 s 中。總共就是 1+2+3+...+N,即 N*(N+1)/2 次復(fù)制。