3、避免跳轉(zhuǎn)
跳轉(zhuǎn)是使用301和302代碼實(shí)現(xiàn)的。下面是一個(gè)響應(yīng)代碼為301的HTTP頭:
HTTP/1.1 301 Moved Permanently Location: http://example.com/newuri Content-Type: text/html
瀏覽器會(huì)把用戶指向到Location中指定的URL。頭文件中的所有信息在一次跳轉(zhuǎn)中都是必需的,內(nèi)容部分可以為空。不管他們的名稱,301和302響應(yīng)都不會(huì)被緩存除非增加一個(gè)額外的頭選項(xiàng),如Expires或者Cache-Control來指定它緩存。<meat />元素的刷新標(biāo)簽和JavaScript也可以實(shí)現(xiàn)URL的跳轉(zhuǎn),但是如果你必須要跳轉(zhuǎn)的時(shí)候,最好的方法就是使用標(biāo)準(zhǔn)的3XXHTTP狀態(tài)代碼,這主要是為了確!昂笸恕卑粹o可以正確地使用。
但是要記住跳轉(zhuǎn)會(huì)降低用戶體驗(yàn)。在用戶和HTML文檔中間增加一個(gè)跳轉(zhuǎn),會(huì)拖延頁面中所有元素的顯示,因?yàn)樵贖TML文件被加載前任何文件(圖像、Flash等)都不會(huì)被下載。
有一種經(jīng)常被網(wǎng)頁開發(fā)者忽略卻往往十分浪費(fèi)響應(yīng)時(shí)間的跳轉(zhuǎn)現(xiàn)象。這種現(xiàn)象發(fā)生在當(dāng)URL本該有斜杠(/)卻被忽略掉時(shí)。例如,當(dāng)我們要訪問http://astrology.yahoo.com/astrology 時(shí),實(shí)際上返回的是一個(gè)包含301代碼的跳轉(zhuǎn),它指向的是http://astrology.yahoo.com/astrology/ (注意末尾的斜杠)。在Apache服務(wù)器中可以使用Alias 或者 mod_rewrite或者the DirectorySlash來避免。
連接新網(wǎng)站和舊網(wǎng)站是跳轉(zhuǎn)功能經(jīng)常被用到的另一種情況。這種情況下往往要連接網(wǎng)站的不同內(nèi)容然后根據(jù)用戶的不同類型(如瀏覽器類型、用戶賬號(hào)所屬類型)來進(jìn)行跳轉(zhuǎn)。使用跳轉(zhuǎn)來實(shí)現(xiàn)兩個(gè)網(wǎng)站的切換十分簡(jiǎn)單,需要的代碼量也不多。盡管使用這種方法對(duì)于開發(fā)者來說可以降低復(fù)雜程度,但是它同樣降低用戶體驗(yàn)。一個(gè)可替代方法就是如果兩者在同一臺(tái)服務(wù)器上時(shí)使用Alias和mod_rewrite和實(shí)現(xiàn)。如果是因?yàn)橛蛎牟煌捎锰D(zhuǎn),那么可以通過使用Alias或者mod_rewirte建立CNAME(保存一個(gè)域名和另外一個(gè)域名之間關(guān)系的DNS記錄)來替代。
4、可緩存的AJAX
Ajax經(jīng)常被提及的一個(gè)好處就是由于其從后臺(tái)服務(wù)器傳輸信息的異步性而為用戶帶來的反饋的即時(shí)性。但是,使用Ajax并不能保證用戶不會(huì)在等待異步的JavaScript和XML響應(yīng)上花費(fèi)時(shí)間。在很多應(yīng)用中,用戶是否需要等待響應(yīng)取決于Ajax如何來使用。例如,在一個(gè)基于Web的Email客戶端中,用戶必須等待Ajax返回符合他們條件的郵件查詢結(jié)果。記住一點(diǎn),“異步”并不異味著“即時(shí)”,這很重要。
為了提高性能,優(yōu)化Ajax響應(yīng)是很重要的。提高Ajxa性能的措施中最重要的方法就是使響應(yīng)具有可緩存性,具體的討論可以查看Add an Expires or a Cache-Control Header。其它的幾條規(guī)則也同樣適用于Ajax:
Gizp壓縮文件
減少DNS查找次數(shù)
精簡(jiǎn)JavaScript
避免跳轉(zhuǎn)
配置ETags
讓我們來看一個(gè)例子:一個(gè)Web2.0的Email客戶端會(huì)使用Ajax來自動(dòng)完成對(duì)用戶地址薄的下載。如果用戶在上次使用過Email web應(yīng)用程序后沒有對(duì)地址薄作任何的修改,而且Ajax響應(yīng)通過Expire或者Cacke-Control頭來實(shí)現(xiàn)緩存,那么就可以直接從上一次的緩存中讀取地址薄了。必須告知瀏覽器是使用緩存中的地址薄還是發(fā)送一個(gè)新的請(qǐng)求。這可以通過為讀取地址薄的Ajax URL增加一個(gè)含有上次編輯時(shí)間的時(shí)間戳來實(shí)現(xiàn),例如,&t=11900241612等。如果地址薄在上次下載后沒有被編輯過,時(shí)間戳就不變,則從瀏覽器的緩存中加載從而減少了一次HTTP請(qǐng)求過程。如果用戶修改過地址薄,時(shí)間戳就會(huì)用來確定新的URL和緩存響應(yīng)并不匹配,瀏覽器就會(huì)重要請(qǐng)求更新地址薄。
即使你的Ajxa響應(yīng)是動(dòng)態(tài)生成的,哪怕它只適用于一個(gè)用戶,那么它也應(yīng)該被緩存起來。這樣做可以使你的Web2.0應(yīng)用程序更加快捷。
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 Yahoo!網(wǎng)站最佳體驗(yàn)守則之內(nèi)容篇 [1] 下一頁 Yahoo!網(wǎng)站最佳體驗(yàn)守則之內(nèi)容篇 [3]
◎進(jìn)入論壇網(wǎng)站綜合、網(wǎng)頁制作版塊參加討論
|