<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    JavaScript是Widgets應用的瓶頸嗎?

    Posted on 2007-09-20 09:35 詩特林 閱讀(1345) 評論(4)  編輯  收藏 所屬分類: JavaScript
    應該IT168寫的專稿;http://tech.it168.com/j/2007-09-19/200709191556778.shtml

     

    JavaScriptWidgets應用的瓶頸嗎?

     

    在過去的一年或者現在,互聯網已經顯示出,因Widgets的使用而呈現爆炸式趨勢。Widget如今已是大行其道,當然也少不了“2007年將是Widget這樣的呼聲。

    少量的幾行JavaScript代碼就可以使自己的Blog面貌煥然一新,這也許就是JavaScriptBlog時代流行的成功之處。從而,各種Blogging技術也是層出不窮,你方唱罷我登場。Widgets、共享小工具、訪問跟蹤、廣告等等。很多情況下,Blogger們只是為了追求新玩意而在自己的Blog上寫上幾行JavaScript代碼,殊不知,許多這樣的小玩意拼在一個頁面里的時候,它們成了頁面加載的瓶頸。那么,JavaScript成了Web 的瓶頸了嗎?其解決辦法或出路在哪呢?這些正是本文所要探討的內容。在本文中,只討論基于WebWidgets,不涉及其他的桌面WidgetsDesktop Widgets),比如YahooMicrosoftVista等。

     

    一、       引言

     

    隨著網絡的發展,Blogger數量飛速增長,很多Blogger都很關注自己Blog的美化,在這種需求下面,出現了很多提供Wdgets服務的網站,只要把相應的Widgets代碼插入Blog相應位置,就可以得到漂亮的效果。

    Widgets gallery :提供很多漂亮Widgets

    Widgetbox:為網站或Blog提供Widgets的服務;

    GoodWidgets:提供在Blog顯示Flickr圖片服務的Widgets

    …………………..

    這樣的信息在網上是一查一大堆。

    在物理學上有種現象叫非線性振動。當不同的力量相互作用時,其結果并非線性的進行疊加,而是難以預測。而這在軟件行業也不例外——當將許多的組件放堆在一塊的時候,最后連自己都弄不明白到底想要做什么了。在Blog上,加載了許多Widgets的頁面,每個組件都是獨立的運作,以達到充分的吸引瀏覽者的目的。然而,結果往往是,這種看似豐富而其實是雜亂無章的東西,不但讓瀏覽者很厭惡,同時,使Blogger也是疲于維護與整理,最后大家都失望。

    二、       Bloggers——受害者

    一個互聯網Widget最值得描述的,就是迷你式(傻瓜式)的應用程序,將功能添加到網頁、Blog等。如果喜歡某一個Widget,只要簡單的復制和粘貼代碼到網頁的HTML程序內,相片的列表、新聞、視頻、廣告、Mp3播放器以及豐富的計數器等就會出在頁面相關的位置!還可以對它進行命名。

    Widgets宣稱可以使網站更加的漂亮化。而對于追求開放與個性化的Blogger而言,這無疑是天大的福音。于是Blogger們紛紛在自己的Blog上加上了許多漂亮的Wedgets,如FlickerTwitterSphere等等。如下所示:

    請將下面的HTML代碼復制到您的頁面中:請注意,為了保證即使twitter.com沒有加載的情況下不影響您的頁面加載,請從第二行開始復制,即從<script type=”text/javascript”…>開始,復制到頁面的底部,在</body>中上。


    1.Blog上加載Widgets的代碼示意圖

    如果對HTMLBlogging平臺有一定了解的話,在Blog中加入Widgets是件很容易的事情。只需要將HTML代碼復制到相關網頁的代碼中去。有些時候,需要將代碼插入到HTML文檔的頭部,但這并沒有難度。此外,還可以利用一些輔助工具進行安裝Widgets,如可以采用Widgetbox平臺來進行輔助安裝。

    安裝Widgets是如此的簡單,于是Blogger們紛紛來者不拒,讓Widgets在自己的Blog中遍地開花。然而否極泰來,樂極生悲,這常常導致頁面加載的時候加長,會降低網站速度。在比較好的情況下,使用的Widgets 來自一個穩定快速的服務器;比較糟糕的是你使用的 Widgets 來自一個不穩定的服務器,那對網站的影響就會很大。不管是上面兩種情況的那一種,完成網站的加載和渲染都取決于第三方服務器上的代碼運行速度,即使是一個成熟穩定的Widgets,它也需要時間來反應,這仍然會造成網站加載速度的減慢。

    三、       JavaScript Widgets

    實現Widgets的主流技術有FlashJavaScriptFlah Widgets有它自身的問題。例如感覺很笨重,大小不可改變及不能操作DOM模型。當然,這并不是僅僅Flash Widgets的缺陷,JavaScript Widgets也難以脫俗。

    大多數使用Widgets 的方式有兩種:Raw 式嵌入或 JavaScript 式嵌入。

    raw 式嵌入通常是提供一個 Object/embed代碼,來直接實現一個 Flash Widget,這種方法的優點是它可以在不允許使用 JavaScript 式嵌入的網站上運行;缺點是:許多人不喜歡把 Object/embed 代碼直接放在他們的頁面上;另外有些Widgets 不是基于Flash 的;最后Widgets 的作者不能對已嵌入的Widgets 進行太大修改變化。

    JavaScript 式嵌入使用了腳本,包括遠程部署代碼進入用戶的網站,優點是:它更簡潔也更靈活,它的缺點是:它或多或少的增加了網站加載時間,而且一旦出現問題,網站加載時間將成倍的增加。

    JavaScript從一開始就被設計成一種輕量級的便于操作HTML文檔但互操作性最小化的客戶端語言。但從以往技術發展的曲線來看,JavaScript正在向一種Web編程語言發展。從AjaxWidgetsJavaScript被應用到許多它所適應范圍邊際上的項目中去。由于,問題就開始出現了。

    程序員對JavaScript最大的詬病莫過于它的單線程模式。JavaScript里是沒有線程的,當然你可以嘗使用setTimeout來試試(這個函數的功能是延時執行某一個函數)。但這并不是真正意見上的多線程。這意味著JavaScript中的代碼只能是順序的執行,沒有并發性(當然除了Ajax調用之外)。于是,當任何時候,一段JavaScript代碼片段在加載或執行的時候,其它什么事情都干不了。這和下圖所示的現象是不是一樣呢?


    2.JavaScript中的“單線程”

           這意味著,一行行額外加載的JavaScript代碼往往導致整個頁面加載速度的降低。而這正是在Blog社區正在發生著的問題。那辦法或是解決出路在哪呢?

    四、       JavaScript Widgets能加速嗎?

    遺憾的是,世上并沒有通萬病的解藥。至今還沒在給JavaScript Widgets加速的簡單而快速的方法。但是一些組織或公司正在嘗試使用一些復合的技術來對加快頁面的加載速度。但舊問題還沒解決,這種混合的技術又帶來了新的問題,可謂一物生一物,雪上加霜。但JavaScript作為客戶編程的一種主流及主要的技術,在必要從行業或是領域的角度來考慮解決這一問題的辦法。下面是一些JavaScript設計們似乎應該考慮的若干建義及設想:

    (1)       JavaScript區分執行

    經常碰到的一個問題是所有的JavaScript都想立即運行,獨木橋人人想過。那么,我們是不是可以這么設計,在頁面加載的時候,對那些不怎么改變頁面的JavaScript代碼,是不是可以等到頁面最終加載完后最執行呢?這樣,頁面的可見內容就可以快速出來。但遺憾的是,所有的瀏覽器都沒在這樣實現。

    (2)       最小化加載時的代碼

    眾所周知,任何頁面加載時運行的代碼都會降低頁面的展現速度。加載時運行的代碼越小,頁面就越快速出來。而另一個相關的問題是,在整個頁面查找某些內容。這往往容易導致無回應腳本對話框的出現,任何JavaScript代碼運行超過幾秒鐘(5)就會發生這種錯誤。而使用timouts來將很長的JavaScript代碼分開執行,也許是一條不二的選擇,當然人人認為這樣做也會很痛苦。

    (3)       采用不同的URLs來平衡請求

    在比較好的情況下,你使用的Widgets 來自一個穩定快速的服務器;比較糟糕的是你使用的Widgets 來自一個不穩定的服務器,那對你的網站的影響就會很大。一些Widgets一般都給出相同的URL,如 www.mycoolwidget.com。當許多的請求者對同一臺Widgets服務器并發請求時,服務器的負載就成了問題。最好的辦法是給出不同的URLs,例如,server1.mycoolwidget.com, server2.mycoolwidget.com等。雖然他們還是指向同一個域,但長遠來看,這無疑是一個化解擁擠的好辦法。

    (4)       使用標準類庫

    在軟件行業最痛苦的事情莫過于重復發明輪子。因為JavaScript很容易出錯,而又不像Java那樣提供豐富的類庫,但是像prototype 以其高效性,正在成為標準類庫。Prototype 1.6剛發布了。Prototype由于富在經驗的JavaScript人員開發,因此此類庫的價值非常高。

    (5)       容器化

    如果不知道Widgets誰將使用或會使用在哪,還在哪些其它的Widgets已經安裝了,如果沒有這些信息,使用JavaScript變得比較困難。但JavaScript愛好者不用悲觀,因為還在很多事情可以做。

    如果我們看一看Java 社區,這樣類似的問題已經被解決了很多次了。真可謂是相見恨晚。大名鼎鼎的AppletsServlets及企業級JavaBeans,其實這些東西和Widgets相比,最大的區別在于,前者被一個容器來管理,而Widgets沒有。這就是問題的解決辦法。

    容器提供各種基礎的服務及接口之間的通信。它負責處理加載、卸載、回調、單擊、提示等內容,這些開發人員喜愛而非技術人員厭惡聽到的東西。總的來說,JavaScript需要一個容器來將JavaScript的有序變成無序。

    (6)       WEDJE

    提供一個Raw 式嵌入還是必要的,因為不是每個網站都允許使用 JavaScript 式嵌入,但是如果Widgets 是使用在人們自己網站或Blog上,JavaScript 式嵌入仍然是一個更理想方法。所以,為了兼容這兩種方式,設想一種新的方案:WEDJEWidget Enabled DOM JavaScript Embedding)。

    Standard document.write:大多數的 JavaScript式嵌入是簡單的使用 document.write 來把代碼寫入頁面,問題是,如果Widgets 服務器停了,其余網站就不能運行Widgets 了,直到 JavaScript自己停止,很多人誤以為可以對其使用延遲屬性來防止這種事情的發生,但延遲屬性完全阻止了 document.write ,所以它不是一個好的解決辦法。

    延遲 innerHTML 代碼:另外一種JavaScript式嵌入的方法是加入帳號機制,增加一個延遲參數來加載JavaScript,在script 加載完后使用 innerHTML 來寫入。這似乎很不錯,但在實際中,不同的瀏覽器的效果都不同。

    五、       小論

    在過去的一年或者現在,互聯網已經顯示出,因Widgets的使用而呈現爆炸式狀態。Widget如今已是大行其道,也有很多關于“2007年將是Widget的呼聲。它首先對于網站(Widget提供方)的推廣是很有益處的,甚至可以說是不二的營銷手段。WidgetsJavaScript工具變得越來越酷及使用更方面時,想要變得更好時,卻發現沒有基本的基礎性的東西來支撐。Blog變得越來越慢了,這得歸咎于越來越多的WidgetsJavaScript的濫用。而要求Blogger們理解各種Widgets混合使用會導致的問題,這似乎超出了Blogger們的心理防線。

    此外,我們需要在發布Widgets時,要求按一定標準和準則。最好的參照軟件行業中已有的成功經驗。Java社區有很多成功且很值得借鑒的經驗。


    評論

    # re: JavaScript是Widgets應用的瓶頸嗎?  回復  更多評論   

    2007-09-20 10:28 by 千里冰封
    現在確實好多博客在用這個,搞得頁面花花綠綠的

    # re: JavaScript是Widgets應用的瓶頸嗎?  回復  更多評論   

    2007-09-20 10:48 by sitinspring
    標記一下.

    # re: JavaScript是Widgets應用的瓶頸嗎?  回復  更多評論   

    2007-09-20 18:41 by 阿南
    收下,慢慢讀!

    # re: JavaScript是Widgets應用的瓶頸嗎?  回復  更多評論   

    2007-09-21 17:38 by gbv
    有點不符合網頁優化方向
    主站蜘蛛池模板: 免费人成网上在线观看| 亚洲AV中文无码字幕色三| xxx毛茸茸的亚洲| 国产一卡二卡3卡四卡免费| 亚洲色偷偷av男人的天堂| 99爱免费观看视频在线| 91亚洲va在线天线va天堂va国产| 好紧我太爽了视频免费国产| 亚洲AV无码专区亚洲AV伊甸园| 免费观看在线禁片| 亚洲精品亚洲人成在线观看麻豆| 91麻豆国产免费观看| 亚洲第一页在线播放| 曰批全过程免费视频在线观看| 亚洲午夜理论片在线观看| 国产免费观看a大片的网站| 免费一级毛suv好看的国产网站| 久久亚洲av无码精品浪潮| 国产免费一区二区三区不卡| 亚洲视频免费在线播放| 黄色成人网站免费无码av| 深夜a级毛片免费无码| 亚洲韩国精品无码一区二区三区| 久久ww精品w免费人成| 亚洲中文字幕久久精品蜜桃| 免费在线观看黄网站| a级成人毛片免费图片| 亚洲av无码不卡久久| 免费人成在线观看网站视频| 国产成人免费ā片在线观看老同学| 亚洲精品成人久久| 国产精品黄页在线播放免费| 三级网站免费观看| 亚洲高清有码中文字| 91麻豆国产自产在线观看亚洲| 日本zzzzwww大片免费| 一区二区三区免费视频观看| 在线免费观看亚洲| 免费人成视频x8x8入口| 无码人妻精品中文字幕免费| 亚洲AV色欲色欲WWW|