心得:Web 2.0站點如何提高可用性與性能

看了一些書和一些網站之後,關於Web 2.0站點如何提高可用性與性能的一點心得。基本上結合了《高性能網站》與Hijax的思路。

可以參考的一些網址:

《高性能網站建設指南》讀後隨感
http://www.dbanotes.net/web/high_performance_web_site.html


Yahoo!網站性能最佳體驗的34條黃金守則——JavaScript和CSS
http://yy-web.iteye.com/blog/274059


圖片優化漫談
http://www.cnblogs.com/wanghongyuan/archive/2009/01/14/1375664.html

High Performance Web Sites 讀書筆記
http://www.hickwu.com/?cat=4

Hijax
http://domscripting.com/blog/display/41

Hijax PPT(同時也是一個可退化的Demo)
http://domscripting.com/presentations/xtech2006/


AHAH: Asynchronous HTML and HTTP
http://microformats.org/wiki/rest/ahah

以下是心得:

1)Web 2.0 站點,應當在CSS沒有load成功的情況下,依然能夠呈現有意義有層次的內容

這就是爲什麼,使用ul/li這樣的辦法來實現Menu要好過div。我們在XHTML中依然要保持文檔自身的邏輯,而不能過於依賴CSS。不要過於濫用CSS,使得XHTML文件中只剩下一堆沒有任何意義感的div和span。

2)Web 2.0 站點應當能夠在JavaScript被禁用的情況下,自然地退化爲傳統的Web 1.0的每頁面刷新模式(所謂的Hijax開發方式)

這就意味着,應該使用漸進式的方式引入Ajax:首先使用戶點擊的是一個真的鏈接,然後再用JavaScript加以攔截,並以Ajax的方式獲取信息和刷新部分頁面,而且在標籤裏直接onclick,而要在外部js中通過操作DOM的方式實現,並且在函數體中return false以禁用那個鏈接。

這也意味着後端必須以模塊化的方式實現,既能返回整個頁面,也能返回部分頁面,或者數據或腳本。這對於Ruby的erb特別好實現。推薦視頻(http://media.railscasts.com/videos/136_jquery.mov),不過你得熟悉jQuery和Rails。

這還意味着,對數據有效性的驗證,Ajax僅僅起提升用戶體驗的效果(即時性),真正的驗證需要在後端再做。

優先使用返回部分頁面(即Ahah方式),接下來依次考慮:JSON、XML、JavaScript腳本。

不要濫用Ajax。何況這種濫用,不利於SEO(搜索引擎優化)。有一些過於富的應用,應該使用Air使其成爲桌面程序,卻又擁有Web的許多優點,如CSS就非常利於程序的換膚。

3)Web 2.0 站點應當爲用戶在Web 1.0時代建立起的許多直覺提供支持,這包括:頁面刷新提示、後退/前進支持,甚至可收藏的鏈接。

頁面刷新提示是最基本的。包括正在讀取的動畫、保存成功的一個div的提示等。

關於後兩方面,網上有不少討論。Hijax的方式將方便可收藏性的實現。

4)Web 2.0 站點應該能夠以某種方式提供Web Services

可以以REST方式或SOAP方式,或曰Open API來爲其他網站提供它所實現的服務。這可以使網站的服務的可重用性大大提高。

5)Web 2.0 站點必須保持較高的性能

不可以因爲追求rich而讓網速poor的用戶無法順利訪問。

這裏講三個我能理解的要點:

將CSS置於頁面頭部(注意對於IE,@import相當於將其至於尾部,所以應儘量避免@import),這樣可以CSS中指定的樣式更早起作用,避免用戶看到較醜陋的HTML或空白。

將腳本置於頁面腳部,這樣可以防止腳本的執行阻塞了頁面的載入,而且這也合乎邏輯,因爲大多數腳本本質上都在頁面完全載入之後,改變其DOM,或作其他功能性運算。

儘可能減少連接,即減少小文件的傳輸,這意味着將CSS、js、圖片文件儘可能地合併,並爭取以壓縮的方式傳輸——理想狀況只有一個CSS,一個js,一張圖片(即CSS Sprites技術,可看下圖獲得一個直觀認識):

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章