Ajax基礎教程(5)- 5.5 完成JavaScript壓縮和模糊處理

來源:互聯網
上載者:User

我們都知道,JavaScript是一種在客戶瀏覽器中執行的解釋型語言。換句話說,JavaScript會以明文下載到瀏覽器,再由瀏覽器根據需要執行這個JavaScript代碼。

使用者只要使用瀏覽器的查看原始碼功能就能讀到JavaScript原始碼,該功能會顯示出頁面的完整HTML標記,包括所有JavaScript塊。即使JavaScript原始碼放在一個外部檔案中,並用script標記的src屬性來引用,使用者也可以下載並閱讀它。由於查看頁面的人都能得到JavaScript原始碼,所以不要把專用或機密的邏輯演算法放在JavaScript中。這種邏輯最好放在伺服器上,在那兒會更安全一些。

在基於Ajax的應用中,隨著JavaScript的使用越來越多,JavaScript檔案的大小可能會成為問題。由於JavaScript是一種解釋型語言,因此不會編譯為機器級的二進位碼,而對於可執行代碼來說,二進位碼才是更高效的儲存格式。如果JavaScript檔案太多就會使應用的速度減慢,因為它需要先把原始碼從伺服器下載到瀏覽器,然後才能在瀏覽器上執行。另外,如果使用諸如JSDoc(如前所述)的工具為此要對代碼加註釋,本來就很大的JavaScript代碼會變得更大。

你可能看到了,JavaScript缺少二進位的可執行包,這會帶來兩個問題:安全性差,以及需要下載大量的原始碼。有沒有辦法避開這些問題呢?

JavaScript日益普及,因此也產生了許多工具,這些工具有助於解決這些問題。最簡單的壓縮公用程式會簡單地去除JavaScript原始碼中的所有注釋和分行符號,這樣可以減小下載的原始碼的大小。刪除注釋行和分行符號能使JavaScript檔案的大小縮小30%甚至更多,這要依具體情況而定。需要說明的是,JavaScript原始碼中的所有語句必須正確地以分號結束,只有這樣才能用這種工具對原始碼進行壓縮。如果沒有做到這一點,你就會接收到錯誤或者未預料行為的訊息。所以,在壓縮JavaScript原始碼之前,一定要使用JSLint確保所有語句都以分號結束!

還有一些工具則更進一步,可以提供模糊服務。模糊(Obfuscation)是一種過程,指全面掃描原始碼,將欄位和函數原來的名字改成經編碼的無意義的名字,以防止其他人瞭解原始碼的含義和內部工作。對於能編譯為機器級二進位指令的語言來說(如C++),一般不需要這種模糊處理。即使Java和C#這樣能夠編譯為中間位元組碼而不是二進位指令的現代語言,也需要模糊工具來保證最大程度的安全。JavaScript作為一個完全解釋型語言同樣需要這樣一種工具。

有一個能同時提供壓縮和模糊服務的免費工具,就是MemTronic的HTML/JavaScript Cruncher-Compressor(hometown.aol.de/_ht_a/memtronic/)。這個工具支援多個層次的JavaScript壓縮。最低層次的壓縮在這個工具中稱為擠壓(crunching),只是簡單地刪除所有注釋和分行符號。這個工具的相關文檔稱,這樣可以節省20%~50%的頻寬。使用“crunch”模式,可以看到JavaScript檔案的大小縮小了30%。

最高層次的壓縮在這個工具中稱為壓縮(compressing),是用一種真正的壓縮機制實際壓縮JavaScript原始碼,並向檔案增加自動解壓縮功能。這個工具的相關文檔稱,當使用這種模式時,頻寬可以節省40%~90%,而且壓縮後的輸出已經在目前的版本的IE、Netscape、Mozilla和Opera等瀏覽器上成功通過測試。使用同一個JavaScript檔案,應用“compressing”模式和“crunch”模式進行測試,發現使用“compress”模式使得檔案大小的縮小幅度超過了65%(見圖5-13)。

在寫本書時,MemTronic工具的文檔稱,JavaScript的模糊工具還不算完備。不過,可以看看圖5-13所示的輸出視窗,這裡顯示了對JavaScript檔案執行“壓縮”操作的結果。這個輸出中包含了許多奇怪的字元,難於閱讀。儘管這可能不是真正意義上的模糊處理,但確實足以防止有不良企圖的使用者查看(甚至竊取)你的JavaScript原始碼。

圖5-13 MemTronic的 HTML/JavaScript Cruncher-Compressor可以大大縮小JavaScript原始碼的大小,並且難於讀懂

返回“Ajax基礎教程-目錄”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.