明顯HTML,暗渡“公用腳本”
減少web頁面下載時間的關鍵就是設法減小文件大小。當多個頁面共用一些成分內容時,就可以考慮將這些公用部分單獨分離出來。比如:我們可以將多個HTML頁面都用到的腳本程序編寫成獨立存在的。js文件,然後再在頁面中按如下方式調用它:
以下是引用片段:
<script src="myfile.js"></script>
這樣,公用文件只需要下載一次,然後就進入緩沖區。等下次再次調用包含公用文件的html頁面時,下載時間明顯減少。
讓樣式表內容進入地下工作
CSS是HTML裝扮器,一個漂亮的Web頁面不可能沒有它。HTML頁面中有多種引用CSS的方法,不同的方法導致的效率也不一樣。通常,我們可以將定義於<style></style>間的樣式控制代碼提取出來,保存到單獨的。css文件中,然後在HTML頁面中以<LINK>標記或者@import標記的方式進行引用:
以下是引用片段:
<style>
@import url("mysheet1.css");
</style>
請注意2點:1、。css文件中無需包括<style>標記;2、@import和LINK標記要定義在HTML頁面的HEAD部分。
寶貴內存節省兩法
盡量減少HTML頁面占用的內存空間是加快頁面下載速度的一個有效方法。在這方面,有2個需要注意的問題:
1、使用同一種腳本語言
HTML頁面離不開腳本程序的支持,我們經常會在頁面中嵌入多種腳本語言,比如JavaScript與VBScript.但是,不知你發覺沒有:這樣的混合使用減慢了頁面的訪問速度。原因在於:要解釋並運行多種腳本代碼,就必須在內存中裝載多種腳本引擎。所以,請盡量在頁面中使用同一種腳本語言編寫代碼。
2、巧用IFrame
你使用過<IFRAME>標記嗎?它可是一個非常美妙的功能。如果要在一個HTML文檔中包含第2個頁面的內容,通常的方法是使用<FRAMESET>標記。但是有了<IFRAME>,一切變得簡單了。比如,開發一個文檔預覽頁面,可以在左邊放置一系列主題,在右邊放置一個IFRAME,其中包含要預覽的文檔;當鼠標掠過左邊的每一個主題鏈接時,就在右邊建立一個新的IFRAME以預覽文檔。這樣做,代碼效率無疑是高效的,但同時導致了繁重的處理過程,最終是緩慢的速度。
只使用單一的IFRAME.當鼠標指向一個新主題時,只需要修改IFRAME元素的SRC屬性即可。這樣,任何時間內只會有一個預覽文檔保留在內存。
擇優選用動畫定位屬性
每天上網浏覽頁面,你一定會看到許多動畫效果。比如,一個可愛的小兔子在頁面上來回地走動 …… 實現這個效果的核心技術就是CCS定位。通常,我們是使用element.style.left和element.style.top2個屬性來達到圖形定位的目的。但是,這樣做會產生一些問題:left屬性返回一個字符串,並且其中包含了度量單位(比如100px)。因此,要設定新的位置坐標,就必須首先對這個字符串返回值進行處理,然後才能賦值,象下面一樣:
以下是引用片段:
dim stringLeft, intLeft
stringLeft = element.style.left
intLeft = parseInt(stringLeft)
intLeft = intLeft + 10
element.style.left = intLeft;
你一定會感覺做這麼點事情竟要編寫這麼復雜的代碼,是否有更簡潔的方法?看這4個屬性:posLeft、posTop、posWidth 和 posHeight,它們對應於相應字符串返回值的點數數值。好了,使用這些屬性重新編寫代碼實現上面代碼實現的功能。
以下是引用片段:
element.style.posLeft += 10
代碼短小、速度卻更快!
循環控制多個動畫
說到制作動畫效果,當然離不開定時器的運用。通常的方法就是使用window.setTimeout來不斷地定位頁面上的元素。但是,如果頁面上有多個動畫要顯示,是不是就要設定多個定時器呢?答案是No!原因很簡單:定時器功能將消耗掉大量寶貴的系統資源。可是我們仍能在頁面上控制多個動畫,技巧就是使用一個循環。在循環中根據不同的變量值控制相應動畫的位置,整個循環中只使用一個window.setTimeout()函數調用。
Visibility快於Display
讓圖畫時隱時現會創造很有趣的效果,有2種方法可以實現這個目的:使用CSS的visibility屬性或者display屬性。對於絕對位置元素,diaplay和visibility具有同樣的效果。兩者的區別在於:設置為display:none的元素將不再占用文檔流的空間,而設置為visibility:hidden的元素仍然保留原位置。
但是如果要處理絕對位置的元素,使用visibility會更快。
從小處著手
編寫DHTML網頁的一個重要提示是:從小處著手。初次編寫DHTML頁面時,一定不要試圖在頁面中使用你了解到的全部DHTML功能。每次可以只使用一個單一的新特征,並且仔細地觀察由此產生的變化。如果發現性能有所下降,就可以快速地找到為什麼。
腳本的DEFER化
DEFER是腳本程序強大功能中的一個“無名英雄”。你可能從沒有使用過它,但是看完這裡的介紹後,相信你就離不開它。它告訴浏覽器Script段包含了無需立即執行的代碼,並且,與SRC屬性聯合使用,它還可以使這些腳本在後台被下載,前台的內容則正常顯示給用戶。
最後請注意兩點:
1、不要在defer型的腳本程序段中調用document.write命令,因為document.write將產生直接輸出效果。
2、而且,不要在defer型腳本程序段中包括任何立即執行腳本要使用的全局變量或者函數。
保持同一URL的大小寫一致性
我們都知道UNIX服務器是大小寫敏感的,但是你知道嗎:Internet Explorer的緩沖區也是區別對待大小寫字符串的。因此,作為web開發者,一定要記住保持相同鏈接的URL字符串在不同位置的大小寫的一致性。否則,就會在浏覽器的緩沖區中存放同一位置的不同文件備份,也增加了下載同一位置內容的請求次數。這些都無疑降低了web訪問效率。所以請謹記:同一位置的URL,在不同頁面中請保持URL字符串的大小寫一致性。