【正文】
要輔助于屏幕放大器,或者設(shè)定特別大的顯示字體。 (13 打印頁 ) 緒論 當(dāng)大多數(shù)的網(wǎng)絡(luò)用戶使用帶有典型設(shè)置的瀏覽器訪問網(wǎng)頁時(shí),那些沒有能力的用戶一般利用可選的方法獲得網(wǎng)上的信息。reg。reg。這將給你最好的性 能以避免不必要存儲(chǔ)器的字符串處理。39。 結(jié)論 在這次討論中我集中于多少數(shù)據(jù)流建造技術(shù)可以被應(yīng)用于 ASP 環(huán)境中間;但是不忘記這適用于任何具有大數(shù)據(jù)流的 Visual Basic 的情況,例如手工建立 XML 資料。在某處經(jīng)常性開支為 220 迭代的 StringBuilder 方法( BLDR)開始顯示出價(jià)值,這歸功于數(shù)據(jù)緩沖,不管怎么樣但有一點(diǎn),在 ASP頁中使用 StringBuilder 將很可能得到額外的成就。39。amp。迄今,每次測(cè)試走都在各種各樣的串聯(lián)方法中運(yùn)行過。 XP Professional, PIII850MHz, 512MB RAM)依靠專業(yè)的服務(wù)器( Windows 2020 Advanced Server, dual PIII1000MHz, 256MB RAM)以100Mb/sec 的速度。該試驗(yàn)的執(zhí)行依據(jù) Application Center Testamp。被修正的 WriteHTML 代碼顯示如下。方法有關(guān),還取決于數(shù)據(jù)串聯(lián)的數(shù)量,數(shù)據(jù)流的大小和 StringBuilder 數(shù)據(jù)緩沖區(qū)預(yù)置參數(shù)選擇的情況。還有經(jīng)常性開支包含額外方法稱作 StringBuilder 實(shí)例。 ToString 函數(shù)返回?cái)?shù)據(jù)被正確儲(chǔ)存,同時(shí)也整理緩沖器的大小以適合數(shù)據(jù)。 add a number of text strings Public Sub Append(ParamArray Text()) Dim nArg As Long For nArg = 0 To UBound(Text) AppendInternal CStr(Text(nArg)) Next nArg End Sub 39。 just grow Dim nGrowth As Long nGrowth = IIf(m_nGrowth MinimimGrowth, m_nGrowth, MinimimGrowth) m_nSize = m_nSize + nGrowth m_sText = m_sText amp。 set the initial size and growth amount Public Sub Init(ByVal InitialSize As Long, ByVal Growth As Long) If InitialSize 0 Then m_nInitialSize = InitialSize If Growth 0 Then m_nGrowth = Growth End Sub 39。 buffer size and growth Private m_nInitialSize As Long Private m_nGrowth As Long 39。在 ASP 和 Visual Basic 世界我們無法使用這種類,因此我們需要?jiǎng)?chuàng)造屬于我們自己的。然而,如果我們想要得到改進(jìn)建造大數(shù)據(jù)流的性能,我們需要作出第 2個(gè)選擇,就是減少數(shù)據(jù)流分配的數(shù)量。這技術(shù)導(dǎo)致 15 級(jí)聯(lián)操作中包含小的數(shù)據(jù)流并且只有一個(gè) sHTML 是增長的。在原先的代碼里ASP 編譯器將考慮表達(dá)式的等式右邊并且從左到右評(píng)價(jià)它。 Data( 5, nRep ) amp。 Data( 3, nRep ) amp。 Data( 1, nRep ) amp。 (nRep + 1) amp??葱抻喓?WriteHTML 代碼,如下。39。當(dāng)這在一種單個(gè)的用戶環(huán)境里不能提出主要的問題時(shí),在服務(wù)器環(huán)境里例如在 ASP 申請(qǐng)?jiān)谝粋€(gè) Web 服務(wù)員上運(yùn)行可能會(huì)引起嚴(yán)重的性能和可測(cè)量性問題。這表示每當(dāng)數(shù)據(jù)流的長度被改變的時(shí)候,數(shù)據(jù)表示就被破壞,包含新數(shù)據(jù)類型的數(shù)據(jù)流隨之產(chǎn)生:這結(jié)果產(chǎn)生在存儲(chǔ)器分配操作和存儲(chǔ)器分離操作中。 /TD/TR Next WriteHTML = sHTML End Function 這就是為什么很多 ASP 和 Visual Basic 開發(fā)者建造 HTML 代碼。 /TDTD _ amp。 /TDTD _ amp。 /TDTD _ amp。 Function WriteHTML( Data ) Dim nRep For nRep = 0 to 99 sHTML = sHTML amp。 雖然這是一個(gè)好的設(shè)計(jì)慣例,通過這種方法建立數(shù)據(jù)流對(duì)網(wǎng)絡(luò)站點(diǎn)執(zhí)行效率有較大影響。 ASP 設(shè)計(jì) 很多 ASP 開發(fā)者已經(jīng)遵循好的軟件設(shè)計(jì)原則并且模塊化他們的代碼。 緒論 開發(fā)者編寫 ASP 頁,其實(shí)是在創(chuàng)造一串格式化正文通過 ASP 提供給網(wǎng)絡(luò)客戶。reg。reg。 Active Server Pagesamp。 摘要: 大多數(shù)活躍的服務(wù)器頁 (ASP)應(yīng)用依賴串聯(lián)建立 HTML 格式化的數(shù)據(jù)然后被用戶使用。你能使用多中不同的方法創(chuàng)造該正文,但是你所選擇的方法網(wǎng)絡(luò)應(yīng)用的性能和可測(cè)量性有很大影響。這種設(shè)計(jì)通常采取用某一頁的部分離散的功能模塊組成新頁的形式。不管現(xiàn)實(shí)操作執(zhí)行是從 ASP 的包含文件還是 Visual Basic COM 零部件。 vbcrlf _ amp。 Data( 0, nRep ) amp。 Data( 2, nRep ) amp。 Data( 4, nRep ) amp。包含在 sHTML變量里的正文被返回給呼叫代碼然后使用 給客戶寫信。當(dāng)然,在 ASP 和 Visual Basic 這都由你管理,因此實(shí)際上的花費(fèi)不顯示在表面上。 因此回到上面的代碼碎片:多少數(shù)據(jù)分配在這里執(zhí)行?實(shí)際上答案是 16。的應(yīng)用操作引起那些可變的 sHTML 比破壞和重建。 Function WriteHTML( Data ) Dim nRep For nRep = 0 to 99 sHTML = sHTML amp。 /TDTD _ amp。 /TDTD _ amp。 /TDTD _ amp。 /TD/TR ) Next WriteHTML = sHTML End Function 乍一看很難認(rèn) 出前后代碼之間的差別。這結(jié)果在 16級(jí)聯(lián)操作中包括一直在增長的 sHTML。圖 1 顯示了這一個(gè)相對(duì)于標(biāo)準(zhǔn)串聯(lián)方法而言的最優(yōu)化級(jí)聯(lián)方法。為了達(dá)到這個(gè)目的要求使用 StringBuilder。以下是一個(gè)使用 Visual Basic 開發(fā)的類 StringBuilder(為了更簡練我們忽略了處理錯(cuò)誤的規(guī)則)。 buffer and buffer counters Private m_sText As String Private m_nSize As Long Private m_nPos As Long Private Sub Class_Initialize() 39。 initialize the buffer Private Sub InitBuffer() m_nSize = 1 m_nPos = 1 End Sub 39。 Space$(nGrowth) End If End Sub 39。 return the current string data and trim the buffer Public Function ToString() As String If m_nPos 0 Then Shrink ToString = m_sText Else ToString = End If End Function 39。使用 StringBuilder的 ASP代碼如下顯示。 StringBuilder 如何執(zhí)行與插入 39。注意到多數(shù)情況下,過高估計(jì)空間的數(shù)量比增長要好一些。 Function WriteHTML( Data ) Dim nRep For nRep = 0 to 99 TRTD (nRep + 1) /TDTD Data( 0, nRep ) /TDTD Data( 1, nRep ) /TDTD Data( 2, nRep ) /TDTD Data( 3, nRep ) /TDTD Data( 4, nRep ) /TDTD Data( 5, nRep ) /TD/TR Next End Function 雖然這很可能為我們提供最好的性能和可測(cè)量性,我們已經(jīng)中斷了封裝因?yàn)槲覀儸F(xiàn)在有為 Response 數(shù)據(jù)寫的函數(shù)代碼,因此呼叫代碼已經(jīng)丟失控制的度。reg。 ACT 被配置成使用 5線程以便模擬 5個(gè)用戶連接到網(wǎng)站。 結(jié)果 以下是一系列圖表顯示了每種方法在應(yīng)用中的吞吐量和在 ASP 頁的響應(yīng) 時(shí)間。39。) method BLDR The StringBuilder method 同時(shí)這次測(cè)試對(duì)典型的 ASP 應(yīng)用而言是不實(shí)際的,從表 2中很明顯看出甚至在420 次重復(fù)中記錄也不太大; 如今有很多復(fù)雜的 ASP 頁存在會(huì)超出數(shù)字的范圍并且甚至超過測(cè)試的范圍。 Figure 3 Chart showing response time results Figure 4 Chart showing response time results with CAT omitted TimeToFirstByte 制作的圖表 3和圖表 4以毫秒為單位表示了響應(yīng)時(shí)間的標(biāo)準(zhǔn)。下列指南將幫助你決定何種方法可能最適于你的情形。的方法,特別是當(dāng)處理現(xiàn)有代碼時(shí)。 ? 用 StringBuilder 建造真正的大的或者是加強(qiáng)的數(shù)據(jù)處理。 Microsoftamp。 Visual Studioamp。例如,盲人可能使用一種可以將文字轉(zhuǎn)換成盲文的文本瀏覽器,或者用一個(gè)屏幕閱讀器大聲地讀出來。運(yùn)動(dòng)能力喪失的人可能就不能使用鼠標(biāo)和鍵盤作為一種輸入設(shè)備。一個(gè)可以容易地為不同設(shè)備做轉(zhuǎn)換的網(wǎng)站是一個(gè)容易接近的。 這是政府機(jī)構(gòu)的要求 —— 1998 年美國政府通過了 508 項(xiàng) 復(fù)原法案,要求聯(lián)邦機(jī)構(gòu)使得他們的電子信息容易被單獨(dú)的殘疾人所接近。 在這篇文章中我們將討論通過什么步驟可以讓你的網(wǎng)站變得容易接近。但是這些措施是什么,一個(gè)站點(diǎn)需要使用多少才可能達(dá)到目的?這些問題的答案隨著你詢問的人和這些人需要提供的達(dá)到程度的不同而改變。 WCAG 為設(shè)計(jì)可達(dá)到的網(wǎng)站的目錄提供了 14 條指南。伴隨每條指南的是一套關(guān)卡。 3)優(yōu)先權(quán)價(jià)值 一個(gè) Web 開發(fā)者必須滿足這個(gè)關(guān)卡,否則一個(gè)或更多用戶訪問內(nèi)容將有困難。 WCAG 提供了一套好的行為保證不同程度的可達(dá)到性。然而,即使是 Hotfix,仍然有一些不符合 WCAG 優(yōu)先權(quán) 1的關(guān)卡。通過使用繼承,我們只需修改或 者增加功能性而不需要重寫功能,就可以讓控制符合標(biāo)準(zhǔn)。...39。 這篇文章的剩余部分考慮建造一套適應(yīng)習(xí)慣的 DataGrid 專欄,那將展示一個(gè)Web 控制的按鈕在用戶瀏覽器不支持 JavaScript 時(shí)如何在 sortable DataGrid的頭部內(nèi)進(jìn)行控制。 ” 這條規(guī)則要求識(shí)別的是網(wǎng)頁內(nèi)容是由 script 產(chǎn)生的,還是它的行為是經(jīng)過 script修改的, noscript HTML 元素將解釋 script行為。這些道具包括標(biāo)題、分類表達(dá)、可見物和其他。 DataGridColumn 類是表現(xiàn)專欄的頁眉頁腳。 這種 DataGrid 專欄類,叫做 AccessibleDataGridColumn, 需推翻 DataGridColumn 類的InitializeCell()方法,將檢查 DataGrid 是否設(shè)置成讓不支持 Java 腳本的瀏覽器進(jìn)行訪問。 Visual Studioamp。如果有,它表現(xiàn)為 ImageButton,設(shè)置它的 AlternateText 為專欄的 HeaderText。當(dāng)一個(gè)瀏覽器不支持 JavaScript 時(shí),可適應(yīng)的 DataGrid將在頁眉中顯示出 Buttons,比如 Netscape 或者 Lynx。 這篇文章下載了兩篇 Microsoftamp。 .NET 2020 的工程(兩個(gè)可視化的 Visual Basic .NET 工程):一個(gè)是包含 DataGrid 專欄類的類庫;另一個(gè)是用來驗(yàn)證適應(yīng)性的 Web 應(yīng)用。在 HTML 部分添加以下句法: asp:DataGrid runat=server AutoGenerateColumns=False ... Columns accessibility:AccessibleBoundColumn DataField=FieldName ... /accessibility:AccessibleBoundColumn ... /Columns /asp:DataGrid 以上就是關(guān)于這個(gè)的一切!圖 3 顯示了一個(gè)使用 AccessibleBoundColumn 和