提高網(wǎng)頁(yè)效率的14條注意事項(xiàng)圖文第3/3頁(yè)
第三條:Add an Expires Header 添加周期頭
這個(gè)也并非開(kāi)發(fā)人員來(lái)控制,而是網(wǎng)站服務(wù)器管理員的職責(zé)。所以,如果作為開(kāi)發(fā)人員的你不了解和明白也沒(méi)有關(guān)系。還是把這個(gè)準(zhǔn)則告訴公司的網(wǎng)站服務(wù)器管理員。
第四條:Gzip Components 啟用Gzip壓縮
這個(gè)大家應(yīng)該比較熟悉。Gzip的思想就是把文件先在服務(wù)器端進(jìn)行壓縮,然后再傳輸。這對(duì)于體積較大的純文字型的文件有特效。鑒于這也并非開(kāi)發(fā)人員,而是網(wǎng)站服務(wù)器管理員的工作范疇,這里就不詳細(xì)講解了。如果你對(duì)此感興趣,可以資訊貴公司的網(wǎng)站服務(wù)器管理人員。
第五條:Put CSS at the Top 把CSS樣式放在頁(yè)面的上方。
無(wú)論是HTML還是XHTML還是CSS都是解釋型的語(yǔ)言,而非編譯型的。所以CSS到上方的話,那么瀏覽器解析結(jié)構(gòu)的時(shí)候,就已經(jīng)可以對(duì)頁(yè)面進(jìn)行渲染。這樣就不會(huì)出現(xiàn),頁(yè)面結(jié)構(gòu)光禿禿的先出來(lái),然后CSS渲染,頁(yè)面又突然華麗起來(lái),這樣太具有“戲劇性”的頁(yè)面瀏覽體驗(yàn)了。
第六條:Move Scripts to the Bottom 將腳本放在底部
原因同第五條一樣。只是腳本一般是用來(lái)于用戶交互的。所以如果頁(yè)面還沒(méi)有出來(lái),用戶連頁(yè)面都不知道什么樣子,那談交互簡(jiǎn)直就是扯談。所以,腳本和CSS正好相反,腳本應(yīng)該放在頁(yè)面的底部。
第七條:Avoid CSS Expressions 避免使用CSS中的Expressions
首先有必要先說(shuō)明一下CSS Expressions是什么一個(gè)東西。其實(shí)它就像其它語(yǔ)言中的if……else……語(yǔ)句。這樣在CSS中就可以進(jìn)行簡(jiǎn)單的邏輯判斷了。舉個(gè)簡(jiǎn)單的例子——input{background-color:expression((this.readOnly && this.readOnly==true)?"#0000ff":"#ff0000")}
</style>
<INPUT TYPE="text" NAME="">
<INPUT TYPE="text" NAME="" readonly="true">
第八條:Make JavaScript and CSS External 將javascript和css獨(dú)立成外部文件
這一條好像和第一條有點(diǎn)矛盾。的確,如果從HTTP的request請(qǐng)求數(shù)來(lái)講的話,這樣做的確是降低了效率。但是之所以這么做,是因?yàn)榱硗庖粋€(gè)重要的考慮因素——緩存。因?yàn)橥獠康囊梦募?huì)被瀏覽器緩存,所以如果javascript和css體積較大的時(shí)候,我們將它們獨(dú)立成外部文件。這樣當(dāng)用戶只要瀏覽一次以后,這些體積較大的js和css文件就能被緩存起來(lái),從而極高地提高用戶再次訪問(wèn)時(shí)的效率。
第九條:Reduce DNS Lookups 減少DNS查詢
DNS域名解析系統(tǒng)。大家都知道我們之所以能記住那么多的網(wǎng)址,是因?yàn)槲覀冇涀〉亩际菃卧~,而非http://202.153.125.45這樣的東西,而幫我們把那些單詞和202.153.125.45這樣的ip地址聯(lián)系起來(lái)的就是DNS。那這一條對(duì)我們到底有什么真正意義上的指導(dǎo)意義呢?其實(shí)有兩條:
1:如果不是必須,請(qǐng)不要把網(wǎng)站放到兩臺(tái)服務(wù)器上。
2:網(wǎng)頁(yè)中的圖片、css文件、js文件、flash文件等等,不要太多的分散在不同的網(wǎng)絡(luò)空間中。這就是為什么那種只發(fā)一個(gè)網(wǎng)站中的壁紙圖片的帖子,要比壁紙圖片來(lái)源于不同網(wǎng)站的帖子顯示要快得多的原因。
第十條:Minify JavaScript and CSS 減少JavaScript和CSS文件的體積
這點(diǎn)很好理解。在你的最終發(fā)布版本中把沒(méi)有必要的空行、空格和注釋全部去掉。顯然手工去處理效率太低,好在網(wǎng)上到處都是用于壓縮這些東西的工具。壓縮JavaScript代碼體積的工具隨處可見(jiàn),我便不再列舉了,這里我只提供一個(gè)用于壓縮css代碼體積的在線工具網(wǎng)站——http://www.cssdrive.com/index.php/main/csscompressor
它提供了多種壓縮方式,可以適應(yīng)多種要求。
第十一條:Avoid Redirects 避免跳轉(zhuǎn)
我只從網(wǎng)頁(yè)開(kāi)發(fā)人員的角度來(lái)解讀此條。那么我們可以解讀到什么東西呢?2點(diǎn)——
1:“此域名已過(guò)期,5秒鐘以后,頁(yè)面將跳轉(zhuǎn)到http://www.xxxxxx.com/index.html頁(yè)面”,這句話看起來(lái)的確很熟悉。但是,我就奇怪了,為什么不直接鏈接到那個(gè)頁(yè)面呢?
2:一些鏈接地址請(qǐng)更明確的寫(xiě)出來(lái)。例如:將http://www.dbjr.com.cn/ 寫(xiě)成http://www.dbjr.com.cn (注意最后面一個(gè)“/”符號(hào))。的確,這兩個(gè)網(wǎng)址都能訪問(wèn)到我的博客,但是,事實(shí)上,它們是有區(qū)別的。http://www.dbjr.com.cn 的結(jié)果是個(gè)301響應(yīng),它會(huì)被重新指向http://www.dbjr.com.cn/ 。但是顯然,中間多浪費(fèi)了一些時(shí)間。
第十二條 Remove Duplicate Scripts 移除重復(fù)的腳本
這個(gè)準(zhǔn)則的道理很淺顯,但是真正在工作中,很多人卻因?yàn)椤绊?xiàng)目時(shí)間緊”、“太累了”、“初期沒(méi)有規(guī)劃好”……這樣的理由搪塞過(guò)去了。你,的確可以找很多的理由不去處理這些多余重復(fù)的腳本代碼,如果你的網(wǎng)站不需要更高的效率和后期維護(hù)的話。
也正是這點(diǎn),我提醒大家一些,一些javascript框架、javascript包一定要慎用。至少要問(wèn)一下:用了這個(gè)js kit 到底給我們多少方便,提高了多少工作效率。然后,再與它因?yàn)槎嘤嗟?、重?fù)的代碼帶來(lái)的負(fù)面效果比較一下。
第十三條:Configure ETags 配置你的實(shí)體標(biāo)簽
首先來(lái)講講什么是Etag吧。Etag(Entity tags )實(shí)體標(biāo)簽。這個(gè)tag和你在網(wǎng)上經(jīng)??吹降臉?biāo)簽云那種tag有點(diǎn)區(qū)別。這個(gè)Etag不是給用戶用的,而是給瀏覽器緩存用的。Etag是服務(wù)器告訴瀏覽器緩存,緩存中的內(nèi)容是否已經(jīng)發(fā)生變化的一種機(jī)制。通過(guò)Etag,瀏覽器就可以知道現(xiàn)在的緩存中的內(nèi)容是不是最新的,需不需要重新從服務(wù)器上重新下載。這和“Last-Modified”的概念有點(diǎn)類似。很遺憾作為網(wǎng)頁(yè)開(kāi)發(fā)人員對(duì)此無(wú)能為力。他依然是網(wǎng)站服務(wù)器人員的工作范疇。如果,你對(duì)此有興趣,可以咨詢貴公司的網(wǎng)站服務(wù)器管理員。
第十四條:Make Ajax Cacheable 上面的準(zhǔn)則也適用Ajax
現(xiàn)在的Ajax好像有點(diǎn)被神話了,好像網(wǎng)頁(yè)只要Ajax了,那么就不存在效率問(wèn)題了。其實(shí)這是一種誤解。拙劣的使用Ajax不會(huì)讓你的網(wǎng)頁(yè)效率更高,反而會(huì)降低你的網(wǎng)頁(yè)效率。Ajax的確是個(gè)好東西,但是請(qǐng)不要過(guò)分的神話它。使用Ajax的時(shí)候也要考慮上面的那些準(zhǔn)則。
后記:
當(dāng)然,上面的這些也只是供你參考的理論上的準(zhǔn)則。具體的情況還是要具體的去對(duì)待。理論和準(zhǔn)則只是用來(lái)指導(dǎo)現(xiàn)實(shí)工作的,卻是萬(wàn)萬(wàn)不可死記硬套。
相關(guān)文章
門(mén)戶網(wǎng)站構(gòu)建CSS框架的規(guī)則
對(duì)于大型門(mén)戶,海量信息平臺(tái)及多模塊,多區(qū)域化網(wǎng)站,更需要對(duì)CSS,XHTML,的標(biāo)準(zhǔn)化,符合語(yǔ)意的HTML框架,復(fù)用性強(qiáng)的CSS代碼,這些才能保障你的網(wǎng)站,具有很好的“地基”。2008-09-09javascript橫排豎排標(biāo)準(zhǔn)選項(xiàng)卡效果代碼
嘿嘿,又搗鼓出一個(gè)選項(xiàng)卡來(lái)。以后就用這個(gè)了,很爽,無(wú)視Tab標(biāo)簽與容器的原始class值。 照樣結(jié)構(gòu)/樣式/行為分離~2008-05-05網(wǎng)頁(yè)中img圖片使用css實(shí)現(xiàn)等比例自動(dòng)縮放不變形(代碼已測(cè)試)
這篇文章主要介紹了網(wǎng)頁(yè)中img圖片使用css實(shí)現(xiàn)等比例自動(dòng)縮放不變形(已測(cè)試)的相關(guān)資料,需要的朋友可以參考下2023-03-03ul+li及css制作韓國(guó)風(fēng)格菜單代碼
ul+li及css制作韓國(guó)風(fēng)格菜單代碼...2007-11-11js開(kāi)發(fā)中的頁(yè)面、屏幕、瀏覽器的位置原理(高度寬度)說(shuō)明講解(附圖)
前端js開(kāi)發(fā)中我們常遇到對(duì)頁(yè)面、屏幕、瀏覽器寬高和位置的獲取問(wèn)題,有時(shí)間查到了js的實(shí)現(xiàn)代碼,但是不知道為什么。本篇圖文并茂講解Web環(huán)境中屏幕、瀏覽器及頁(yè)面的高度、寬度信息。2023-02-02在IE下拖動(dòng)滾動(dòng)條時(shí)border消失的解決方法
在IE下拖動(dòng)滾動(dòng)條時(shí)border消失的解決方法...2007-01-01CSS定位中Positoin、absolute、Relative的一些研究
用Div+CSS進(jìn)行網(wǎng)站布局時(shí),做一些浮動(dòng)層等特殊特殊效果時(shí)要考慮到定位問(wèn)題。這就要用到Positoin屬性等。2008-10-10