技巧 19: 利用瀏覽器的驗證功能
現今的瀏覽器對一些進階功能如 XML、DHTML、Java Applet和遠端資料服務提供支援。儘可能使用這些功能。所有這些技術都可以執行客戶機端驗證和資料緩衝,免去了到 Web 服務器的往返。如果您在運行一個智能瀏覽器,那麼瀏覽器就能為您進行一些驗證(例如,在執行 POST 之前,檢查信用卡校正和是否有效)。儘可能使用這一功能。通過減少客戶-伺服器之間的往返,可降低 Web 服務器上的負載,並能減少網路通訊量(雖然發送到瀏覽器的第一個頁面可能比較大)以及伺服器訪問的任何後端資源。此外,使用者不必像住常一樣讀取新頁,從而使用者的感覺會好一些。這樣做並不意味著您可以不進行伺服器端驗證 - 您還應始終進行伺服器端驗證。這可以防止由於某種原因(如駭客,或瀏覽器不運行客戶機端驗證常式)客戶機產生錯誤的資料。人們已經進行了大量的工作,開發“獨立於瀏覽器”的 HTML。正是由於這種憂慮,開發人員不願再使用流行的瀏覽器功能,但這些功能本可以改善效能。對於一些真正的高效能網站,必須關心瀏覽器“訪問”問題,一個好的策略是最佳化頁面,使其適應流行的瀏覽器。使用瀏覽器功能組件,可以在 ASP 中方便地檢測到瀏覽器功能。Microsoft FrontPage 等工具有助於設計適合於瀏覽器和指定 HTML 版本的代碼。參見 When is Better Worse?Weighing the Technology Trade-Offs,以瞭解更進一步的討論。
技巧 20:避免在迴圈語句中使用字串串聯
許多人在迴圈語句中建立一個字串,如下所示:
s = ?<table>? & vbCrLf
For Each fld in rs.Fields
s = s & ? <th>? & fld.Name & ?</th> ?
Next
While Not rs.EOF
s = s & vbCrLf & ? <tr>?
For Each fld in rs.Fields
s = s & ? <td>? & fld.Value & ?</td> ?
Next
s = s & ? *lt;/tr>?
rs.MoveNext
Wend
s = s & vbCrLf & ?</table>? & vbCrLf
Response.Write s
採用這種方法會出現一些問題。第一個問題是反覆串聯字串需要花兩次方的時間,更通俗地說,運行這種迴圈語句所花的時間與記錄數乘以欄位數所得值的平方成正比。在將 ADO 記錄集轉換為 HTML 表的特定情況下,應考慮使用 GetRows 或 GetString。如果在 JScript 中串聯字串,特別建議使用 += 運算子,即,使用 s += ?某字串?,而不使用 s = s + ?某字串?。