在壓縮之前是否有一些有效的縮小目的?如果壓縮文件首先被縮小,那麼壓縮文件似乎不太可能更小。在gzipping之前縮小JavaScript有沒有好處?
我問,因爲診斷縮小代碼中的生產問題要困難得多,而且我想知道人們是否將自己置於毫無目的的情況下。
在壓縮之前是否有一些有效的縮小目的?如果壓縮文件首先被縮小,那麼壓縮文件似乎不太可能更小。在gzipping之前縮小JavaScript有沒有好處?
我問,因爲診斷縮小代碼中的生產問題要困難得多,而且我想知道人們是否將自己置於毫無目的的情況下。
是的,這肯定有好處。
縮小是有損壓縮,而縮小是無損的。 Ergo,通過縮小您刪除不需要的數據(如註釋和長變量名),這將始終幫助您縮小文件。即使使用gzip,在大多數情況下仍然會有所不同。
例子:
function foo(this_is_my_variable){
var this_is_my_other_variable = 0;
this_is_my_other_variable = this_is_my_other_variable + this_is_my_variable;
return this_is_my_other_variable;
}
這可能是精縮到:
function foo(a){
var b = 0;
b = b +a;
return b;
}
或者,如果minifier是聰明的:
function foo(a){
return a;
}
所有代碼都給出了相同的結果,但尺寸差別很大。
也許吧。除了刪除空格之外,縮小JavaScript可能會導致相同文本的重複次數增加,這可能意味着使用gzip進行稍微更高的壓縮。幸運的是,由於命令行工具在* nix和available for Windows中通用,使用相同的壓縮算法(雖然格式不完全相同),所以前後很容易做到。
當我在gzip之前縮小時,我總是看到最終字節數明顯減少。
我有一個20分鐘的hack作業php腳本,它與yui壓縮器接口,以及googles關閉編譯器。它顯示了我之前和之後的字節,包括gzip之後,對我來說很容易檢查。
至於原始文件的大小,這裏是一個樣本(jQuery的1.4.2):
$ curl http://code.jquery.com/jquery-1.4.2.js | gzip > jquery.gz
$ curl http://code.jquery.com/jquery-1.4.2.min.js | gzip > jquery-min.gz
$ ls -la jquery*
-rw-r--r-- 1 me staff 24545 Apr 7 12:02 jquery-min.gz
-rw-r--r-- 1 me staff 45978 Apr 7 12:02 jquery.gz
所以縮小的版本的一半大小。
它也可以幫助加快JavaScript代碼在瀏覽器中的解析。根據文件的大小,瀏覽器可能會花費大量的時間解析和標記文件,這將通過縮小來減少。
當然,只有基準測試和分析才能告訴您這是否會對您的特定情況有利。
我發現的最好作品是我在我的網站上保留了所有.js文件的縮小和非縮小版本,只需使用配置開關即可在兩者之間切換。這樣,正常的生產可以使用縮小版本,然後如果我必須調試某些東西,只需翻轉開關,而非縮小版本就可以提供。 (構建過程確保縮小和非縮小版本當然是同步的)
您不應該在生產網站上進行真正的調試。 – Ben 2014-08-04 15:33:54
這真的很容易檢查...並且您應該使用您的實際文件;或不要擔心它,只是gzip – 2010-04-07 03:54:23
我剛剛在我有這裏的文件上試過這個。這是160kb解壓縮,56kb包裝。使用相同的設置進行了壓縮,解壓後的一個變爲28kb,並且打包的一個23kb。 – nickf 2010-04-07 04:02:31
@Steve,看看Compressor Rater,你可以將你的代碼與各種流行的縮小工具進行比較,無論是否帶有額外的gzip壓縮效果:http://compressorrater.thruhere.net/ – CMS 2010-04-07 04:28:07